模板方法模式,在一个操作中定义算法的框架,将算法中的步骤延迟到子类实现。
应用场景:(1)将算法不变部分一次实现,可变部分由子类实现。
(2)控制子类扩展,实现HOOK方法。
缺点:增加了实现类的数量。
结构图:

其实就是把所有共同的地方提取到父类,然后个别区别的地方在子类中实现。
写一下这个结构图中的代码,写两个具体类(A和B):
(1)AbstractClass:
public abstract class AbstractClass {
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();
public void TemplateMethod() {
PrimitiveOperation1();
PrimitiveOperation2();
System.out.println();
}
}
(2)ConcreteClassA、ConcreteClassB:
public class ConcreteClassA extends AbstractClass{
@Override
public void PrimitiveOperation1() {
System.out.println("具体类A--方法1");
}
@Override
public void PrimitiveOperation2() {
System.out.println("具体类A--方法2");
}
}
public class ConcreteClassB extends AbstractClass{
@Override
public void PrimitiveOperation1() {
System.out.println("具体类B--方法1");
}
@Override
public void PrimitiveOperation2() {
System.out.println("具体类B--方法2");
}
}
(3)客户端调用:
public class Main {
public static void main(String[] args) {
AbstractClass c;
c = new ConcreteClassA();
c.TemplateMethod();
c = new ConcreteClassB();
c.TemplateMethod();
}
}
输出: