Java设计模式<模板模式>
意图
- 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
场景
- 有一些通用的方法
优点
- 封装不变部分,扩展可变部分。
- 提取公共代码,便于维护。
- 行为由父类控制,子类实现
现实场景举例
在公司中经常出现一种老员工带新员工,老员工负责搭建系统骨架,新员工负责开发系统细节。比如老员工实现了一个天安排的一个骨架,现在需要新员工实现tom的一天的具体安排
定义一个抽象类Schedule
public abstract class Schedule {
protected abstract void washFace();
protected abstract void lockSeat();
protected abstract void goToWork();
protected void assign(){
washFace();
lockSeat();
goToWork();
}
}
新员工实现TOM的一天TomSchedule
public class TomSchedule extends Schedule{
protected void washFace() {
System.err.println("I am tom ,I have wash my face");
}
protected void lockSeat() {
System.err.println("I am have lock your seat");
}
protected void goToWork() {
System.err.println("I love my work");
}
}
测试类
public class DemoMain {
public static void main(String[] args) {
Schedule schedule = new TomSchedule();
schedule.assign();
}
}
输出
I am tom ,I have wash my face
I am have lock your seat
I love my work