设计模式(二十一)——模板模式
理解
模板模式,我的理解是父类中有操作的流程已经确定,但是没有具体的实现,实现可以在子类中实现,但是流程已经确定,只要在父类中实现一次即可。
应用场景
学生吃午饭,排队选择不同的吃的和喝的,先选吃的再选喝的这个流程已经确定,但是选择什么还没有确定。
lunch方法已经确定了,但是eat和drink方法还没有确定,这两个方法留到子类来实现
public abstract class Student {
public abstract void eat();
public abstract void drink();
public void lunch(){
System.out.println("吃午饭");
eat();
drink();
}
}
Tom的选择
public class Tom extends Student{
@Override
public void eat() {
System.out.println("Tom 吃饭");
}
@Override
public void drink() {
System.out.println("Tom 喝水");
}
}
Jrerry的选择
public class Jerry extends Student{
@Override
public void eat() {
System.out.println("Jerry 吃面");
}
@Override
public void drink() {
System.out.println("Jerry 喝饮料");
}
}
public static void main(String[] args) {
Student tom = new Tom();
Jerry jerry = new Jerry();
tom.lunch();
jerry.lunch();
}
输出结果:
也可以用匿名内部类
new Student() {
@Override
public void eat() {
System.out.println("吃面包");
}
@Override
public void drink() {
System.out.println("喝汽水");
}
}.lunch();
还有一个例子:高一,高二,高三,三个年级,每天要上8节课,但是课可能会不相同。