關於Head First設計模式中的策略模式的困惑

freesea發表於2009-03-23
大家好,最近在jdon學習了一段時間,買了本關於模式的書來學習,<Head first 設計模式>中的第一個模式策略模式(Strategy),其中有三個設計原則:
1、找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的程式碼混在一起
2、針對介面程式設計,而不是針對實現程式設計
3、多用組合,少用繼承。

策略模式定義了演算法族,分別封裝起來,讓它們之間可以互想替換,此模式讓演算法的變化獨立於使用演算法的客戶。

它舉了一個SimuDuck的列子,使用的是策略模式,如下圖

http://www.jdon.com/jivejdon/imageShow.jsp?id=0

其實我有點困惑,根據原則1 2 3為什麼不把行為再拿出來,抽像一個更高階別的介面呢,而是把飛行行為和呱呱叫行為單獨出來呢?假如鴨子要求還有其它行為,那不是又要修改Duck類嗎?我覺得因該抽像出一個Behavoir介面(只是一個像徵意義的型別,沒有實體),飛行行為和呱呱叫行為因該實現行為介面,這樣有新的行為時,就不需修改Duck。請banq指點一下,這樣可以嗎


[該貼被freesea於2009-03-23 20:38修改過]

相關文章