欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式--模板模式

程序员文章站 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();
    }
}

执行结果
设计模式--模板模式