• 设计模式之模板方法


    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. 实践
     
    非常常见的设计模式,通过父类定义框架,子类来填充
  • 相关阅读:
    关于matplotlib绘制直方图偏移的问题
    XP下 无法定位程序输入点WSAPoll于动态链接库ws2_32.dll 的解决办法
    Ubuntu 拨号上网及校园网开启IPV6
    php性能优化
    Mac OS X 10.11.6 重置root密码
    php 接口类与抽象类的实际作用
    Redis Cluster集群的搭建与实践
    nginx 反向代理 取得真实IP和域名
    mysql主从配置,出错
    mycat水平分片规则
  • 原文地址:https://www.cnblogs.com/jiyuqi/p/4571764.html
Copyright © 2020-2023  润新知