薯拾

teplete-method

2019-12-25

Template Method

  • 动机
    在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却又很多改变的需求,或者由于固有的原因,(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。
    如何在稳定操作结构的前提下,来灵活应对各个子步骤的变化或晚期实现需求。

  • 定义
    定义一个操作中的算法骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method 使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。

  • Demo
    image.png

    红色部分是Libraries或者框架实现的步骤,灰色部分是应用实现,主流程框架较为稳定的情况下将主流程放在libraries,应用开发只需要override步骤2和4就行(比如servlet)。

  • 总结

    1. Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性) 为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。

    2. 除了可以灵活应对子步骤的变化外, “不要调用我,让我来调用你” 的反向控制结构是Template Method的典型应用。
      image.png

    3. 在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法、纯虚方法),但一般推荐将它们设置为protected方法。

    4. 适合框架设计,库的设计,比如servlet,spring中会有使用。

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章