模板方法模式(TemplateMethod):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。
下面是模板方法模式的结构图:
下面演示一个Demo:
定义个AbstractClass类:
abstract class AbstractClass {
/**
* 一些放到子类中去实现的抽象行为
*/
public abstract void primitiveOperation1();
public abstract void primitiveOperation2();
/**
* 模板方法,给出了逻辑的骨架
* 逻辑的组成是一些相应的抽象行为
* 这些行为推迟到子类中去实现
*/
public void templateMethod() {
primitiveOperation1();
primitiveOperation2();
}
}
它的两个实现子类:
public class ConcreteClassA extends AbstractClass{
@Override
public void primitiveOperation1() {
System.out.println("ConcreteClassA实现primitiveOperation1");
}
@Override
public void primitiveOperation2() {
System.out.println("ConcreteClassA实现primitiveOperation2");
}
}
public class ConcreteClassB extends AbstractClass{
@Override
public void primitiveOperation1() {
System.out.println("ConcreteClassB实现primitiveOperation1");
}
@Override
public void primitiveOperation2() {
System.out.println("ConcreteClassB实现primitiveOperation2");
}
}
客户端:
public class Client {
public static void main(String[] args) {
AbstractClass ac;
ac = new ConcreteClassA();
ac.templateMethod();
ac = new ConcreteClassB();
ac.templateMethod();
}
}