模板方法模式简介
模板方法模式(Template Method),定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
使用示例
public abstract class AbstractClass {
public void algorithmMethod(){
System.out.println("公用算法实现");
methodPart1();
System.out.println("公用算法实现");
methodPart2();
System.out.println("公用算法实现");
}
protected abstract void methodPart1();
protected abstract void methodPart2();
}
public class ConcreteClass1 extends AbstractClass {
@Override
public void methodPart1() {
System.out.println("part1 class1");
}
@Override
public void methodPart2() {
System.out.println("part2 class1");
}
}
public class ConcreteClass2 extends AbstractClass {
@Override
public void methodPart1() {
System.out.println("part1 class2");
}
@Override
public void methodPart2() {
System.out.println("part2 class2");
}
}
public class Client {
public static void main(String[] args) {
AbstractClass cls1 = new ConcreteClass1();
AbstractClass cls2 = new ConcreteClass2();
cls1.algorithmMethod();
System.out.println("==================");
cls2.algorithmMethod();
}
}
结果输出:
公用算法实现
part1 class1
公用算法实现
part2 class1
公用算法实现
==================
公用算法实现
part1 class2
公用算法实现
part2 class2
公用算法实现
总结
优缺点
模板方法模式提供了一种公共代码抽出的思路:将一个方法拆分,然后在子类中实现方法的一部分。此时有效避免了一个方法中需要进行 if 判断造成的代码臃肿。