设计模式—模板方法模式

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

模板方法模式:

定义一个操作的流程框架,而将流程中一些步骤延迟到子类中实现。使得子类在不改变流程结构的情况下,重新定义流程中的特定步骤。

主要角色:

抽象类: 负责给出操作流程的轮廓或框架,由模板方法和若干基本方法组成。
  1、抽象方法:由抽象类声明,在具体子类中实现个性化逻辑。
  2、具体方法:在抽象类中实现的公共方法(也可以在子类中覆盖)
  3、模板方法:定义了流程框架,按照流程顺序调用抽象或者具体方法。
具体子类: 实现抽象类中所定义的抽象方法。

类图

设计模式—模板方法模式

优点:

1、将相同的逻辑代码通过 concreateMethod 提取到抽象类中,提高了代码复用性。
2、、实现了反向控制,符合开闭原则。通过父类抽象类调用子类的具体实现,实现了反向控制。

缺点

1、每个不同的实现都需要定义一个子类,会导致类的个数增加,使系统更庞大。
2、父类中的抽象方法由子类实现,子类的结果影响父类的结果,提高代码的阅读难度。

案例

需求背景: 实现一个客户创建接口供外部系统调用,包括客户基础信息、客户地址信息、客户联系人信息三个维度。每个维度都有系统来源、有效期字段。数据写入要对基本信息校验,及查询数据库做重复性校验。
设计思路: 定义一个基础的抽象类,包含抽象主键校验,和具体的系统来源字段校验,模板方法内调用两个校验。在具体的客户、地址、联系人类中实现具体的主键校验逻辑。设计模式—模板方法模式

实际项目感悟:

1、这种设计模式concreateMethod 可以将公用部分有效提取,简化代码。
2、AbstractMethod 实现往往需要使用泛型,包括方法的入参和返回结果。
3、这种设计模式在未学习前,提取了抽象类和一些公共逻辑放在具体方法中,但是没有考虑到再创建一个模板方法,将抽象方法和具体方法串联起来。文章来源地址https://www.toymoban.com/news/detail-495901.html

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

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

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

相关文章

  • 设计模式(7)模板方法模式

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

    2024年02月12日
    浏览(43)
  • Java设计模式 (一) 模板方法设计模式

    什么是模板方法设计模式? 模板方法设计模式是一种行为型设计模式,它定义了一个算法的骨架,并将一些步骤的具体实现延迟到子类中。模板方法模式可以帮助确保在算法的不同部分中保持一致性,同时也允许子类根据需要进行具体实现。 模板方法模式的关键特点包括:

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

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

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

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

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

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

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

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

    2024年02月21日
    浏览(45)
  • C++设计模式之 模板方法模式

    【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C++编码部分】         --什么是模板方法模式(第18种设计模式)         模板方法模式 (Template Method Pattern)是⼀种 行为型设计模式 , 它定义了⼀个算法的骨架,将 ⼀些

    2024年01月21日
    浏览(49)
  • 经典的设计模式13——模板方法模式

    开始11个属于行为型模式的复习。 用户登录控制功能用模板方法实现。 定义: 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 结构: 抽象类(abstract):负责给出一个算法的轮廓和骨架

    2024年02月08日
    浏览(39)
  • 14.python设计模式【模板方法模式】

    内容:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法某特定步骤。 角色: 抽象类(AbstractClass):定义抽象的原子操作(钩子操作);实现一个模板方法作为算法的骨架。 具体类(ConcreteClass):

    2024年02月15日
    浏览(37)
  • C++设计模式22:模板方法模式

    C++ 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式

    2024年02月02日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包