设计模式—行为型模式之模板方法模式

设计模式---行为型模式之模板方法模式

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

模板方法(Template Method)包含两个角色:

  • 抽象类/抽象模板(Abstract Class)
  • 具体子类/具体实现(Concrete Class)

举例

做饭抽象类:

java 复制代码
/**
 * 做饭步骤抽象类
 */
public abstract class CookTemplate {

    /**
     * 定义流程
     * 模板方法模式核心
     * 父类可以实现某些步骤
     * 留一些关键内容给子类
     */
    public void cook(){
        heating();
        addFood();
        addSalt();
        stirfry();   
        end();      
    }

    //加热方法
    public void heating(){
        System.out.println("开火加热....");
    }
    //添加食物
    public abstract void addFood();
    //加盐
    public abstract void addSalt();

    //翻炒
    public  void stirfry(){
        System.out.println("进行翻炒中...");
    };

    //出锅
    public  void end(){
        System.out.println("出锅了....");
    };
}

炒茄子类:

java 复制代码
public class StirFriedEggplantCook extends CookTemplate{
    @Override
    public void addFood() {
        System.out.println("加一斤茄子");
    }

    @Override
    public void addSalt() {
        System.out.println("加一勺盐");
    }
}

测试类如下:

java 复制代码
public class TemplateTest {
    public static void main(String[] args) {
        CookTemplate cookTemplate = new StirFriedEggplantCook();
        cookTemplate.cook();
    }
}

运行结果如下:

模板方法模式,是由父类定义好操作流程,由子类实现一些关键的步骤,然后调用父类制定好流程的方法。

相关推荐
七月丶2 小时前
别再手动凑 PR 了:这个 AI Skill 会按仓库习惯自动建分支、拆提交、提 PR
人工智能·设计模式·程序员
刀法如飞2 小时前
从程序员到架构师:6大编程范式全解析与实践对比
设计模式·系统架构·编程范式
九狼2 小时前
Flutter + Riverpod +MVI 架构下的现代状态管理
设计模式
SimonKing3 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean3 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven974 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55113 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河14 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程16 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读