模板模式
场景:
所有学生从家去学校上学,第一步出门,第二步前往学校,第三步到达学校。
但是穷学生和富二代去上学的第一步和第三步是一样,第二步可能穷学生走路去,富二代坐车去。
所以流程一样,但是其中有一些步骤采用不同的方法就可以使用模板模式。
- 创建学生类
public abstract class Student{
public Student();
public void outDoor(){ //第一步
System.out.println("出门...");
}
public abstract wayToSchool();//第二步,使用抽象方法,不同学生子类采用不同方法实现
public void arriveSchool(){ //第三步
System.out.println("到学校了...");
}
public void goSchool(){ //整体流程
outDoor();
wayToSchool(); //子类根据自身实现方法调用
arriveSchool();
}
}
- 具体学生类
public class RichStudent extends Student{
public RichStudent(){}
@Override
public void wayToSchool(){
System.out.println("走路...");
}
}
public class PoorStudent extends Student{
public PoorStudent(){}
@Override
public void wayToSchool(){
System.out.println("坐自己家的豪车...");
}
}
main
方法测试
Student s1 = new RichStudent();
s1.goSchool();
Student s2 = new PoorStudent();
s2.goSchool();