Re: [問題] 一段時間重複跑程式怎麼寫??

看板java作者 (wctang)時間18年前 (2006/04/21 16:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串12/12 (看更多)
※ 引述《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
文章代碼(AID): #14I99dsf (java)
討論串 (同標題文章)
文章代碼(AID): #14I99dsf (java)