设计模式——模板方法模式

这篇具有很好参考价值的文章主要介绍了设计模式——模板方法模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

模板方法模式(Template Method Pattern)是一种行为型设计模式,它在抽象类中定义了一个算法的框架,并将一些步骤延迟到子类中实现。这种模式使得子类可以在不改变算法结构的情况下重写算法中的某些特定步骤。

原理

  • 抽象模板类(Abstract Template Class): 定义一个操作中的算法骨架,包含了一个或多个“模板方法”,这些方法由基本代码和若干个待实现的抽象方法组成。
  • 具体模板类(Concrete Template Classes): 实现抽象模板类中声明的抽象方法,从而完成算法中未指定部分的具体逻辑。

Java代码示例

// 抽象模板类 - 烹饪基础流程
public abstract class CookingRecipe {
    // 模板方法
    public final void cookMeal() {
        prepareIngredients();
        cook();
        serve();
    }

    // 具体方法由抽象类实现
    protected void prepareIngredients() {
        System.out.println("Preparing ingredients...");
    }

    // 抽象方法,留给子类实现
    protected abstract void cook();

    // 具体方法由抽象类实现
    protected void serve() {
        System.out.println("Serving the meal...");
    }
}

// 具体模板类 - 蒸饭食谱
public class SteamedRiceRecipe extends CookingRecipe {
    @Override
    protected void cook() {
        System.out.println("Steaming rice...");
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        CookingRecipe recipe = new SteamedRiceRecipe();
        recipe.cookMeal(); // 输出:Preparing ingredients... -> Steaming rice... -> Serving the meal...
    }
}

想象你正在教孩子做一道菜,这个过程中包含了切菜、炒菜和上菜三个步骤。作为家长,你会告诉孩子整个做菜的大致流程(模板方法),但是让孩子自己决定如何切菜和炒菜(抽象方法)。这样,每次做不同的菜时,只要按照你设定的基本流程走,但具体怎么切怎么炒可以根据不同菜品自由发挥。文章来源地址https://www.toymoban.com/news/detail-798837.html

应用场景

  • 框架与应用开发:许多Java框架如Spring MVC、Struts等都使用了模板方法模式,它们提供了一个处理请求的基本流程框架,开发者只需要覆盖其中的关键步骤来实现自己的业务逻辑。
  • 软件构建过程:构建工具Maven使用模板方法模式执行一系列构建任务,如清理、编译、测试、打包等,每个步骤都可以根据需要自定义扩展。
  • 游戏开发:游戏中角色的行为可以采用模板方法模式,比如战斗动作有一套通用的执行流程(准备、攻击、结束),但具体的攻击方式由各个角色类自己实现。

适用性

  • 当多个子类具有相同的算法结构,只是其中一部分实现细节有所不同时。
  • 控制子类必须遵循某种算法框架或者顺序时。
  • 一次性实现一种操作中的不变部分,并将可变的行为留给子类去实现。

到了这里,关于设计模式——模板方法模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式——模板方法模式

    模板方法模式(Template Method Pattern)是一种行为型设计模式,它在抽象类中定义了一个算法的框架,并将一些步骤延迟到子类中实现。这种模式使得子类可以在不改变算法结构的情况下重写算法中的某些特定步骤。 抽象模板类(Abstract Template Class): 定义一个操作中的算法骨架

    2024年01月17日
    浏览(47)
  • 【设计模式】模板方法模式

    模板方法模式:定义一个操作中的算法骨架(父类),而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构来重定义该算法的 实现一些操作时,整体步骤很固定,但是呢。就是其中一小部分需要改变,这时候可以使用模板方法模式,将容易变的部分抽

    2024年02月08日
    浏览(47)
  • 设计模式—模板方法模式

    定义一个操作的流程框架,而将流程中一些步骤延迟到子类中实现。使得子类在不改变流程结构的情况下,重新定义流程中的特定步骤。 主要角色: 抽象类: 负责给出操作流程的轮廓或框架,由模板方法和若干基本方法组成。   1、抽象方法:由抽象类声明,在具体子类中实

    2024年02月10日
    浏览(50)
  • 设计模式---模板方法模式

            所谓模板方法模式,就是提供一种方法的模板来实现一种规范,其他人可以利用这个模板定义自己的逻辑。         在Java编程中的应用,主要就是通过接口或者抽象类来实现的,抽象类中可以把逻辑函数声明为final类型,表示不能被重写,即不能改变逻辑。在接口中

    2024年04月24日
    浏览(44)
  • 设计模式(13):模板方法模式

    实现一个功能时,整体步骤很固定,但是,某些部分易变。易变部分可以抽象出来,供子类实现。 非常繁琐,各个框架,类库中都有它的影子,比如常见的有: 数据库访问的封装 Junit单元测试 servlet中关于doGet/doPost方法调用 spring框架中各种Template shire中权限认证和授权都用到

    2024年04月16日
    浏览(47)
  • 设计模式(7)模板方法模式

    一、定义: 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。

    2024年02月12日
    浏览(43)
  • 设计模式【行为型】-- 模板方法模式

          模板方法模式是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤的具体实现延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板方法模式基于一个抽象类或接口定义算法的骨架,该骨架由一个模板

    2024年02月16日
    浏览(47)
  • 设计模式之八:模板方法模式

    泡咖啡和泡茶的共同点: 把水煮沸 沸水冲泡咖啡/茶叶 冲泡后的水倒入杯子 添加糖和牛奶/柠檬 在上面的代码种,prepareRecipe就是一个模板方法。 模板方法 定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现(依赖子类提供某些或所有步骤的实现,父类拥有并保护

    2024年02月11日
    浏览(42)
  • js设计模式:模板方法模式

    父类定义一个整体的模板框架,将具体的方法行为定义到子类中。 模板方法主要是封装行为中的固定部分,同时允许子类对方法进行扩展

    2024年02月22日
    浏览(43)
  • 设计模式(六):模板方法模式(行为型模式)

    Template Method,模板方法:定义一个操作中的算法的骨架,而将一 些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即 可以重定义该算法得某些特定步骤。 举例说明 奶茶制作过程,第一步加牛奶,第二步加糖,第三步加其他配料。第三步对于不同口味的奶

    2024年02月21日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包