-
类图:
模板方法定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤;
其中,AbstractClass为抽象模板类,定义了算法的骨架TemplateMethod(),具体子类将重定义PrimitiveOperation以实现一个算法的步骤;
ConcreteClass继承AbstractClass实现了方法PrimitiveOperation1()、PrimitiveOperation2()以完成算法中具体实现步骤。
//#pic_center -
代码示例:
- 抽象模板类
public 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("具体方法A方法1实现");
}
@Override
public void PrimitiveOperation2() {
System.out.println("具体方法A方法2实现");
}
}
- Client客户端
public class Client {
public static void main(String[] args) {
AbstractClass abstractClass;
abstractClass = new ConcreteClassA();
abstractClass.TemplateMethod();
abstractClass = new ConcreteClassB();
abstractClass.TemplateMethod();
}
}