模板模式
一般做一件事都会有步骤,先后顺序。模板模式是抽象父类定义了一些抽象方法,这些是子类需要实现重写的,每个子类做这个步骤都是不同的。还可以有公共的方法,就是大家都要做的,做的都是相同的。
例如上学,一般步骤是起床、吃饭、坐车。每个人起床方式不同,可能是闹钟叫醒的,可能是老妈叫醒的。吃的早餐也会各式各样,但大家都是坐班车,这个一样的。
抽象父类:
public abstract class School {
/**
* 依次执行以下步骤
*/
public void process(){
this.getUp();
this.eat();
this.byCar();
}
public abstract void getUp();
public abstract void eat();
public void byCar(){
System.out.println("坐班车去学校");
}
学生1:
public class StudentOne extends School{
@Override
public void getUp() {
System.out.println("闹钟叫醒了我");
}
@Override
public void eat() {
System.out.println("早上吃的粥和包子");
}
}
学生2:
public class StudentTwo extends School{
@Override
public void getUp() {
System.out.println("老妈叫醒了我");
}
@Override
public void eat() {
System.out.println("早上吃的面条");
}
}
环境类:
public class Context {
public static void main(String[] args) {
School stu1 = new StudentOne();
School stu2 = new StudentTwo();
stu1.process();
System.out.println("============================================");
stu2.process();
}
}
运行结果:
闹钟叫醒了我
早上吃的粥和包子
坐班车去学校
============================================
老妈叫醒了我
早上吃的面条
坐班车去学校