设计模式--模板模式
程序员文章站
2024-01-20 16:02:22
...
定义
模板模式: 定义一个骨架, 允许子类为一个或多个步骤提供实现.
- 可一次性实现实现一段逻辑的不变部分,将可变部分留给子类实现
- 避免代码重复, 将各个类的公共行为提取到一个统一父类上
示例
以完成作业,然后老师抽查作业为例子, 想思路,拿笔本,做作业等步骤都是一样,将不同老师检查作业方式不同作为钩子函数
创建一个作业工作类
public abstract class Job {
protected final void doHomework() {
// 想思路
this.wantThinking();
// 拿笔和本子
this.grabPenAndNotebook();
// 写作业
this.finishHomework();
// 是否检查作业
if (isTestAssignments()) {
this.testAssignments();
}
}
/** 交给之类实现 */
abstract void testAssignments();
protected boolean isTestAssignments() {
return true;
}
final void wantThinking(){
System.out.println("想思路");
}
final void grabPenAndNotebook(){
System.out.println("拿笔和本子");
}
final void finishHomework(){
System.out.println("完成作业");
}
}
创建一个检查作业的老师类,实现父类的预留方法
public class MathTeacher extends Job {
@Override
void testAssignments() {
System.out.println("数学老师检查作业!");
}
}
测试代码
public class Test {
public static void main(String[] args) {
MathTeacher mathTeacher = new MathTeacher();
mathTeacher.doHomework();
}
}
执行结果