首页 > 其他 > 详细

设计模式之模板方法

时间:2015-06-12 16:37:17      阅读:285      评论:0      收藏:0      [点我收藏+]

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. 实践
 
非常常见的设计模式,通过父类定义框架,子类来填充

设计模式之模板方法

原文:http://www.cnblogs.com/jiyuqi/p/4571764.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!