jbpm源码阅读之二
? new Configuration()讲解
?
? ? 接着上次,我们主要来研究下面这一句代码.看似简单,实例化了一个流程引擎,但他里面实现的逻辑是十分复杂的.这里值得我们学习,也是JBPM良苦用心的设计.我们以后设计的组件,也应该这样子,对外暴露的接口是十分简单的接口跟内部实现存在映射关系,但内部的实现是十分复杂的.让用户看起来模型是很简单的.
?
?
? ? 我们把上面这一行简单的代码分为三部分讲解,?这次阅读我们具体来研究Configuration().
?
public ConfigurationImpl() { // to prevent a loop in the constructors, we need to delegate to a non-default constructor in Configuration super(null); }? ? 父类中,有一个构造方法Configuration(Object o).子类super(null)方法中调用的是Configuration(Object o)这个构造方法.这个Configuration(Object o)方法即可解决掉这个死循环.这很值得我们学习.
? ? 我们来假设一下,如果子类构造方法中没有super(null)这行代码.
?
? ? 很明显,这样就是一个死循环.
?
?
?
? ? 总结? ? ? ? 总节这一次阅读,这次阅读内容就是new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();中的第一部分Configuration().具体我们知道了两个问题:
Configuration类是一个皮,具体是狼是羊是由它的子类也是它的实现类ConfigurationImpl决定的.Configuration类的所有方法都是调用它的实现类ConfigurationImpl,再一次说明Configuration类是一张皮.在JBPM这种设计思想中,怎么样去解决死循环问题.?
?
?