首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

jbpm源码翻阅之二

2012-06-28 
jbpm源码阅读之二? new Configuration()讲解?? ? 接着上次,我们主要来研究下面这一句代码.看似简单,实例化

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)这行代码.

?

    首先Configuration类的构造方法实例化了它的子类ConfigurationImpl.由于JAVA VM的需要,在子类ConfigurationImpl的构造方法中,默认会调用父类的构造方法Configuration().Configuration()实例化子类ConfigurationImpl.

? ? 很明显,这样就是一个死循环.

?

?

?

? ? 总结

? ? ? ? 总节这一次阅读,这次阅读内容就是new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();中的第一部分Configuration().具体我们知道了两个问题:

Configuration类是一个皮,具体是狼是羊是由它的子类也是它的实现类ConfigurationImpl决定的.Configuration类的所有方法都是调用它的实现类ConfigurationImpl,再一次说明Configuration类是一张皮.在JBPM这种设计思想中,怎么样去解决死循环问题.

?

?

?

热点排行