從學習設計模式到現在有3個月了,原計劃2個月學完,因為這段時間工作比較忙有所耽擱,所以直到現在才把書和視頻啃完。經過這段時間的學習,學到了很多東西,主要是對OO有了更多的認識,以前的的認識不過是語言層面的,而現在在設計層次有了更多認識。李建忠老師的視頻真的很有用,之前看設計模式這本書都是霧裡看花,不是看得很清楚,理解也不到位,甚至覺得很苦澀,通過他視頻的重新梳理,回過頭來理解設計模式這本書的內容來是如此的輕鬆!這也使我真正體會到了這本書的巨大價值,他沒有提供很多實際性的例子,但是在思想上給了我們很大的提高。在我現在所做的項目中,已經開始應用這些模式,也許用得不是很好,但是至少是個好的開始。這兩天在china-pub上找《物件導向分析和設計》、《敏捷式軟體開發 (Agile Software Development):原則、模式與實踐》這兩本書,第一本好像翻譯得不怎麼樣,而且第三版也出了很久了但是一直都沒引進,所以暫時買第二本吧,昨天已經下訂單了,希望明天能到貨。還是來簡要回顧下各個設計模式。
1、建立型模式:
Singleton:限制執行個體化對象的個數,比如抽象工廠中的工廠、對象池等。
Abstract Factory:建立一系列相互依賴對象,並能在運行時改變系列。
Factory Method:建立單個對象,在Abstract Factory有使用到。
Prototype:通過拷貝原型原型對戲那個來建立新的對象。
2、組合模式
Adapter:實現介面轉換,用於舊代碼複用、類庫遷移等。
Bridge:實現抽象和實現的分離,支援對象多維度變化。
Composite:屏蔽對象容器內部實現結構,實現對象和對象容器使用的一致性。
Decorator:實現對象功能的擴充,避免子類膨脹。
Facade:屏蔽各子系統的複雜性,提供更高層介面供客戶訪問。
Flyweight:通過共用大量細粒度對象,提供系統效能。
Proxy:通過增加間接代理,實現更多控制,屏蔽複雜性。
3 、行為型模式
Chain of Responsibility:動態構建職責鏈,實現交易處理。
Command:將一組行為抽象為對象,實現行為要求者和行為實現者之間的解耦。
Interpreter:將特定領域的問題表達為某種文法規則下的句子,然後構建一個解譯器來解釋這樣的句子,從而達到解決問題的目的。
Iterator:屏蔽集合對象內部複雜結構,提供客戶程式對它的透明遍曆。
Mediator:封裝一系列對象之間的複雜互動,使他們不需要顯式相互引用,實現解耦。
Observer:實現對象狀態改變,通知依賴它的對象並更新。
Memento:實現對象狀態儲存及恢複。
State:封裝對象狀態,從而在其內部狀態改變時改變它的行為。
Strategy:封裝一系列演算法,從而可以隨時獨立於客戶替換演算法。
TemplateMethod:定義演算法骨架,通過子類虛函數重寫實現子方法的改變。
Visitor:在類階層中,在不改變各類的前提下定義作用於這些類執行個體的新的操作。
設計之路剛剛開始,還需繼續努力