Template Method Pattern属于行为模式。
GOF定义:定义一个操作中算法骨架,将一个些算法操作延迟到子类中去实现,模板方法使得子类能够改变算法结构或者重新定义算法实现。
角色分析:结构非常简单
AbstractClass(抽象类):
在抽象类中定义一系列的基本操作,者写基本操作可以具体的实现也可以是抽象的。
ConcreteClass(实现类):
用于实现或者覆盖父类的一系列基本操作。
适用环境:
1、一次实现算法不变的部分,将可变的部分留给子类。
2、实现各个子类公共的部分,其他部分留给子类。
3、负责算法的分割,将算法固定不变的部分设计为模板,留给子类调用。
4、子类实现,父类调用(钩子)。
例:模板方法就是灵活使用继承的方式。
package template;
/**
*create by datao.wang 2014-2-8-上午10:44:32
*子类必须以线程启动
*/
public abstract class Template {
public abstract void action();
public void doAction(){
new Thread(new Runnable() {
@Override
public void run() {
action();//调用子类的实现
}
}).start();
}
}
package template;
/**
*create by datao.wang 2014-2-8-上午10:45:02
*子类现象父类的模板
*/
public class SubTemplate extends Template {
@Override
public void action() {
System.out.println(1+1);
}
}