關於Head First設計模式中的策略模式的困惑
大家好,最近在jdon學習了一段時間,買了本關於模式的書來學習,<Head first 設計模式>中的第一個模式策略模式(Strategy),其中有三個設計原則:
1、找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的程式碼混在一起
2、針對介面程式設計,而不是針對實現程式設計
3、多用組合,少用繼承。
策略模式定義了演算法族,分別封裝起來,讓它們之間可以互想替換,此模式讓演算法的變化獨立於使用演算法的客戶。
它舉了一個SimuDuck的列子,使用的是策略模式,如下圖
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修改過]
相關文章
- 《Head First 設計模式》:策略模式設計模式
- Head First 設計模式(1)-----策略模式設計模式
- 《Head First 設計模式》:剩下的模式設計模式
- [head first 設計模式] 第一章 策略模式設計模式
- 《Head First 設計模式》:模板方法模式設計模式
- 《Head First 設計模式》:單件模式設計模式
- 《Head First 設計模式》:外觀模式設計模式
- 《Head First 設計模式》:狀態模式設計模式
- 《Head First 設計模式》:組合模式設計模式
- 《Head First 設計模式》:工廠方法模式設計模式
- 《Head First 設計模式》:觀察者模式設計模式
- 《Head First 設計模式》:與設計模式相處設計模式
- Head First 設計模式 —— 13. 代理 (Proxy) 模式設計模式
- Head First 設計模式(3)----裝飾者模式設計模式
- Head First 設計模式 —— 14. 複合 (Compound) 模式設計模式
- Head First 設計模式(2)---觀察者(Observer)模式設計模式Server
- Head First設計模式讀書筆記設計模式筆記
- Head First 設計模式 —— 09. 模版方法 (Template Method) 模式設計模式
- Head First 設計模式筆記 3.裝飾者模式設計模式筆記
- [head first 設計模式]第二章 觀察者模式設計模式
- 【設計模式】漢堡中的設計模式——策略模式設計模式
- 設計模式(三)Animation中的策略模式設計模式
- Python 中的設計模式詳解之:策略模式Python設計模式
- 設計模式在 TypeScript 中的應用 – 策略模式設計模式TypeScript
- 「HEAD-FIRST」之觀察者模式模式
- 設計模式-策略模式設計模式
- 設計模式——策略模式設計模式
- 設計模式(策略模式)設計模式
- 設計模式系列 · 無從下手的困惑 (一)設計模式
- 設計模式之--策略模式及其在JDK中的應用設計模式JDK
- 設計模式🔫---策略模式設計模式
- 設計模式之【策略模式】設計模式
- 小白設計模式:策略模式設計模式
- 設計模式之策略模式設計模式
- js設計模式--策略模式JS設計模式
- 設計模式 #5 (策略模式、代理模式)設計模式
- 工作中常用的設計模式--策略模式設計模式
- 設計模式【12】-- 搞定最近大火的策略模式設計模式
- GoLang設計模式15 - 策略模式Golang設計模式