作者wctang (wctang)
看板java
标题Re: [问题] 一段时间重复跑程式怎麽写??
时间Fri Apr 21 16:30:53 2006
※ 引述《TsaiCF (Feng)》之铭言:
: 从以前到现在,
: 对於 Template Method、Strategy、Command 这三个 pattern, (或许再加个State?)
: 我一直觉得他们概念相当接近, 实务上也常可以混用.
: 让我常常分不清楚我的实作(或看到的实作)究竟该归类在那个 pattern.
: 不过根据我的理解, 我认为 Timer跟TaskTimer 归类於 Command 会比较恰当.
单纯就这个简的例子而言,讨论属於哪个 pattern 是蛮没意义的,因为用那个 pattern
有时是看你怎麽解释的。不过如果是纯粹讨论一下这几个 pattern 的差别那还是个不错
的题材。以下是我对这几个 pattern 的理解。
: =====================
: Template Method :
Template 重点在於把定义核心操作,让抽象的算法来运算不同的物件。像只要实作
comparable, 大家都可以来 sort 。
: ======================
: Strategy
需要使用一个功能,我只定义结果,实作的作法可以随意抽换(这东西其实蛮癈话的)。
就像是我要一个 sort 的功能,谁来 sort 都可以,只要大家都有 sort() 让我呼叫就好
: =======================
: Command
把一连串的动作(讯息)物件化。最有意思的特色就是实作 undo/redo 的功能。
:========================
: State
当一个物件的内部状态复杂时,将不同的状态用不同的物件来分开实作。
例如一个档案在开启/唯读/唯写/读写/关闭(如果把属性也当状态来看)的不同状态,呼叫
open/close/read/write 的反应都不同,所以如果 File 内部有 FileState 的介面,而
有 FileOpenState, FileCloseState 等实作,都有 open/close.. 的 method ,这样只
要依不同状态产生不同 FileState 再去呼叫 method 即可。
个人浅见,大家讨论讨论 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.242.10