zoukankan      html  css  js  c++  java
  • 行为型-模板方法模式(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/

  • 相关阅读:
    java自定义注解教程
    java8 LocalDateTime时间格式化
    java8新特性Stream用法详解
    java将数组转换成list集合
    elestaticsearch原生写法创建mapping
    springboot-mybatis-plus生成器
    jQuery.bind() 函数详解
    CSS3 中的 rem 值与 px 之间的换算
    console.log的应用
    JQuery中$(document)是什么意思有什么作用
  • 原文地址:https://www.cnblogs.com/fangyanr/p/14046345.html
Copyright © 2011-2022 走看看