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设计模式》

  • 相关阅读:
    文件上传与下载/Mail
    监听器/国际化
    过滤器
    父类转为子类涉及到的安全问题
    连接池
    【MySQL】Windows10下的安装与配置
    【neo4j】关于出现The old parameter syntax `{param}` is no longer supported. Please use `$param` instead的问题
    关于GitHub上传超过100M文件方法
    记录一次在知道创宇公司的实习面试经历
    《机器学习实战(基于scikit-learn和TensorFlow)》第七章内容学习心得
  • 原文地址:https://www.cnblogs.com/followflows/p/1910939.html
Copyright © 2011-2022 走看看