概述:模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。
模式中的角色
抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。
具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。
例子:人们每天都要早上起床吃早餐,晚上回家休息睡觉,不过白天学生是学习,工人是工作
抽象模板类:
public abstract class AbstractPerson {
public void doWork() {
System.out.println("早上起床吃早餐");
working();
System.out.println("晚上回家休息睡觉");
}
protected abstract void working();
}
学生:
public class Student extends AbstractPerson {
@Override
protected void working() {
System.out.println("在学校学习");
}
}
工人:
public class Worker extends AbstractPerson {
@Override
protected void working() {
System.out.println("在公司工作");
}
}
测试类:
public class Test {
public static void main(String[] args) {
AbstractPerson person1 = new Student();
AbstractPerson person2 = new Worker();
person1.doWork();
person2.doWork();
}
}