zoukankan      html  css  js  c++  java
  • 设计模式:Template Method 模板方法模式

    Template Method 模板方法模式

       1.定义

      模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

       2.阐述

      什么是“模板”?模板在这个模式中就是一个具体的方法。这个方法定了实现某一算法的一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这样可以确保算法的结构保持不变,同时由子类提供部分实现。
      模板方法模式一次性实现了一个算法的不变部分(例:算法实现步骤),并将可变的行为留给子类来实现。 它可帮助我们去除同一类层次结构中子类所包含的相似方法中的重复代码。
      模板方法模式中的不变行为由如下几点组成:

         i.被调用的方法和调用的顺序;

        ii.子类必须重写的重写的抽象方法;

        iii.子类可能会重写的钩子方法;

      3.UML

      在UML图中,父类中的templateMethod是一个抽象方法,这个方法内按照一定顺序调用了四个方法——primitiveOpertion1、primitiveOpertion2、concreteOpertion、hook,其中primitiveOpertion1和primitiveOpertion2都是抽象方法,需要子类根据具体情况去实现,但算法的整体框架是由父类中的templateMethod方法来控制的。

      4.使用
      对于Client,一个实现了模板方法模式的类结构如何使用呢?
      PHP代码如下:

    $subClass2 = new SubClass2();
    $subClass2->templateMethod();

      5. 结论

      模板方法模式是一种比较简单的设计模式,也比较常见,应该予以掌握。

      参考资料: 《重构与模式》

            《Head First设计模式》

  • 相关阅读:
    学习bn算法
    记录pytorch的几个问题
    Python: 你不知道的 super
    cmd里面怎么复制粘贴
    tensorflow的transpose
    应该做一个软件,直接把视频里面的英语,转换成字幕,然后翻译
    继续修改,爬虫贴吧,上次的每次只取一个图片.
    Deleting elements
    Map, filter and reduce
    List methods
  • 原文地址:https://www.cnblogs.com/followflows/p/1910939.html
Copyright © 2011-2022 走看看