通过模版方式模式进行框架设计


最近在看 Mina的源代码。结合之前使用过的一些,诸如Structs,Zend,JUint等等框架,对框架的基本实现模式有了一点认识。
例如使用structs2时,需要继承ActionSupport类并实现它的execute()的方法。这就是典型GoF的模板方法模式。

首先看看下面模板方法的类图:


父类AbstractClass定义了两个抽象方法Operation1,Operation2和一个普通方法TemplateMethod。
这个普通方法会有类似如下的语句:

void TemplateMethod(){
     PrimitiveOperation1();
     PrimitiveOperation2();
}


Operation1和Operation2是抽象方法,未实现。
它的子类ConcreteClass实现了这两个抽象方法,并没有重写TemplateMethod方法。
这就是把AbstractClass比作ActionSupport,而ConcertedClass就是我们自己定义的一个类并继承父类,然后重载抽象方法。

那么,当框架启动时就会进行如下调用:

public static void main(String[] args){
     AbstractClass abClass=new ConcreteClass();  //实际可能是通过配置文件获得具体实现类的类名,如structs的配置文件
     abClass.TemplateMethod();
}


通过这种方式,就可以实现由框架定义规则并调用而实际使用的用户只需要写具体的实现就可以了。
那么,通过这种方式一个基本的框架就跃然纸上了。

你可能感兴趣的:(java,设计模式)