template method


定义

名称:  template method

结构:



意图:

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

适用性:

  • 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
  • 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是O p d y k e 和J o h n s o n 所描述过的“重分解以一般化”的一个很好的例子[ O J 9 3 ]。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
  • 控制子类扩展。模板方法只在特定点调用“h o o k ”操作(参见效果一节),这样就只允许在这些点进行扩展。

    效果:


经典案例

1、著名的Framework方面的“好莱坞法则”(Don't call us, we'll call you )就是主要由Template Method支持的“反向控制”(Superclass调用Subclass的Method)产生的。

最佳实践

1、 应用程序框架使你可以从一个或者一系列类继承下来,进而创建一个新的应用程序,你可以重用既有类的大多数代码并且按照你自己的需要重载其中的某些方法,从而实现应用程序的定制。Template Method是应用程序框架的一个基本概念,它通常隐藏在(框架)背后,通过调用基类的一组方法(有些方法你可能已经重载过了)来驱动应用程序。
        Template Method的一个重要特征是: 它是在基类里定义的,而且不能够被(派生类)更改。有时候它是私有方法(private method),但实际上它经常被声明为final。它通过调用其它的基类方法(重载过的)来工作,但它经常是作为初始化过程的一部分被调用的,这样就没必要让客户端程序员能够直接调用它了。


相关模式
1、

参考文章
1、与大虾对话: 领悟设计模式--Template Method / Visitor
         http://jjhou.csdn.net/myan-design-patterns-big5.htm
2、 http://lcspace.nease.net/d-pattern/gof-tips2.xml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值