Re: [問題] 一段時間重複跑程式怎麼寫??
※ 引述《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
討論串 (同標題文章)
完整討論串 (本文為第 12 之 12 篇):