zoukankan      html  css  js  c++  java
  • 设计模式之模板方法

    Template Method(模板方法)

     
    1. 意图
     
    定义一个操作中算法的骨架,将一些 步骤延迟到子类中,Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。
     
    2. 动机
     
    考虑一个提供Application和Document类的应用框架。Application类负责打开一个已有外部存储形式的文档,如一个文件。一旦一个文件的信息从该文件中读取之后,它就由一个Document对象表示。
     
     
     
    我们称OpenDocument方法为一个模板方法(template method),一个模板方法用抽象的操作定义一个算法,而子类重定义这些操作以提供具体的行为。Application的子类将定义检查一个文档能否被打开(CanOpenDocument)和创建文档(DoCreateDocument)的具体算法步骤。Document子类MyDocument则定义读取文档的算法步骤(DoRead)。
     
    通过使用抽象操作定义算法中的一个或几个步骤,模板方法确定了它们的先后顺序,但它允许Application和Document子类改变这些步骤以满足各自的需求。
     
    3. 适用性
     
    一次性实现算法中不变的部分,将可变的部分交给子类实现
    各子类中的公共行为应被提取并集中到父类中以避免代码重复
    子类的扩展受父类控制
     
    4. 结构
     
     
    5. 协作
     
    ConcreteClass靠AbstractClass实现算法中不变的步骤
     
    6. 效果
     
    模板方法是一种代码复用的基本技术,在类库中尤为重要,其提供了类库的公共行为。模板方法导致一种反向的控制结构,“好莱坞法则",“别找我们,我们找你”,指父类调用子类的操作,而不是相反。
     
    7. 实践
     
    非常常见的设计模式,通过父类定义框架,子类来填充
  • 相关阅读:
    第一个MIPS汇编
    选你所爱,爱你所选
    海明码(汉明码)的工作机制
    第一个x86汇编程序
    机器学习 coursera【week1-3】
    描述符应用与类的装饰器
    多态,封装,反射,类内置attr属性,os操作复习
    面向对象操作
    类属性的增删改查,类属性和实例属性
    os常用模块,json,pickle,shelve模块,正则表达式(实现运算符分离),logging模块,配置模块,路径叠加,哈希算法
  • 原文地址:https://www.cnblogs.com/jiyuqi/p/4571764.html
Copyright © 2011-2022 走看看