• 行为型-模板方法模式(Template Method)


    介绍

    模板方法模式是一种行为设计模式 它在超类中定义了一个算法的框架 允许子类在不修改结构的情况下重写算法的特定步骤

    当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法来处理。

    模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来提现它的优势。

    模板方法模式就是提供了一个很好的代码复用平台。当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。

    模板方法设计模式

    真实世界类比

    建造大型房屋

    可对典型的建筑方案进行微调以更好地满足客户需求

    模板方法可用于建造大量房屋 标准房屋建造方案中可提供几个扩展点 允许潜在房屋业主调整成品房屋的部分细节

    每个建造步骤 (例如打地基 建造框架 建造墙壁和安装水电管线等 都能进行微调 这使得成品房屋会略有不同

    模板方法模式示例:

    我们将创建一个定义操作的 Game 抽象类,其中,模板方法设置为 final,这样它就不会被重写。Cricket 和 Football 是扩展了 Game 的实体类,它们重写了抽象类的方法。

    TemplatePatternDemo,我们的演示类使用 Game 来演示模板模式的用法。

     

     

     

    执行程序,输出结果:

    Cricket Game Initialized! Start playing.
    Cricket Game Started. Enjoy the game!
    Cricket Game Finished!
    
    Football Game Initialized! Start playing.
    Football Game Started. Enjoy the game!
    Football Game Finished!

     

    在 Java 中使用模式

    识别方法 模版方法可以通过行为方法来识别 该方法已有一个在基类中定义的 “默认 行为

    1、java.io.InputStream java.io.OutputStream java.io.Reader 和 java.io.Writer 的所有非抽象方法

    2、java.util.AbstractList java.util.AbstractSet 和 java.util.AbstractMap 的所有非抽象方法

    3、javax.servlet.http.HttpServlet 所有默认发送 HTTP 405 “方法不允许 错误响应的 do­XXX()方法 你可随时对其进行重写

    转:https://www.runoob.com/design-pattern/template-pattern.html

    转:https://refactoring.guru/

  • 相关阅读:
    Python3之random模块常用方法
    Go语言学习笔记(九)之数组
    Go语言学习笔记之简单的几个排序
    Go语言学习笔记(八)
    Python3之logging模块
    Go语言学习笔记(六)
    123. Best Time to Buy and Sell Stock III(js)
    122. Best Time to Buy and Sell Stock II(js)
    121. Best Time to Buy and Sell Stock(js)
    120. Triangle(js)
  • 原文地址:https://www.cnblogs.com/fangyanr/p/14046345.html
Copyright © 2020-2023  润新知