模式简介
先说一个场景,考生考试,老师发下来的卷子,然后学生在上面答题。每个人的卷子都是一样的。交卷之后每张卷子只有答案不一样。
这样的话,因为卷子是一样的,只有答案不一样。因为卷子是一样的。所以可以让空卷子做一个父类,然后让每个人的卷子作为子类,继承空卷子。这就是模板模式。
我写了一个demo,不过这个demo和我说的不太一样。我写的是这样的。以去银行为背景。
1. 取号码
2. 取钱/存钱/换钱
3. 走了。
其中,第二步可以作为一个抽象方法,第一步第三步写完整,然后用具体的子类取实现第二步。
public abstract class BankTemplateMethod {
public void takeNumber() {
System.out.println("取号码");
}
public abstract void transact();
public void goAway() {
System.out.println("走了");
}
}
public class TakeMoney extends BankTemplateMethod{
public void transact() {
System.out.println("取钱");
}
}
public class Client {
public static void main(String[] args) {
BankTemplateMethod tmp = new TakeMoney();
tmp.takeNumber();
tmp.transact();
tmp.goAway();
}
}
优点
就是减少了子类的代码,可以把不变的代码放进超类。去除子类中的重复代码。