Programming 版 (精华区)

发信人: Sun (大灯泡), 信区: SoftEng
标  题: [Design Pattern] Template 
发信站: 哈工大紫丁香 (2001年04月15日16:52:22 星期天), 站内信件

发信人:Crystal_Y (小衲)  版面名称:SoftEng(1084)
标 题:[Design Pattern] Template Method
发信站:中国科大BBS站 (Sat, 14 Apr 2001 13:59:57 )
标 记:精华


  Template Method重在抽象、复用(很重要吧呵呵)

  在一大堆现有对象(或算法、结构、操作等等)中发现它们的共同之处,
不同之处,然后构造出一个抽象的template method,在这个method里能够
体现那些相同之处(这是一般构造基类都要做到的),并且(以下是Template
Method的特点) ,在这个method里能够规定将来的子类需要做的那些不同之处。

  Template Method结构很简单,一个Abstract Class和一个Concrete Class,
Abstract Class中定义了一种操作的框架(Template Method),提供了一些
primitive operations,然后Concrete Class来实现它们。这和一般的子类
重载基类的思想不同,一般是基类作了一些,子类先调用它,然后再扩充它,
这里是说你不要动,我叫你动的时候你再动,即所谓的hook operation

  这可以用Observer模式中的一个问题来说明,一个Subject在一个OperationA
里更改了状态,然后通知Observer们去更新。如果一个Subject的子类在它的
OperationA里,先调用基类的OperationA,然后再对同一状态作了修改,这样就
发生了不一致的问题。那么我们就在Subject基类里定义一个Template
Method,它提供OperationA执行的框架,并且在最后一步进行Observer模式的
Notify,这样子类要重载的不是OperationA,而是里面提供的hookOperation,
无需担心Notify的问题。

  关键还是一个抽象,对一个问题能够抽象出它的框架framework,它的行为
pattern,一切就好办了。

--
※ 来源: 中国科大BBS站 [bbs.ustc.edu.cn]



--
    如果程序员懂得了软件工程,
    那么他就不再是牛,
    更不是妓女了。

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.384毫秒