設計模式心得體會

7月初的一個周末,準確的說應該是7月1號周六,在網上看到一本《大話設計模式》的書,而且看到很多很好的評論,於是乎,下載了電子書看看,一下子看了幾章之後,對設計模式有了個了解,於是繼續上網搜些其他資料,進一步了解設計模式。。。最終結論:設計模式是個好東西,具體怎么好,一兩句話是無法概括的,也是從那天起,我就決定學習設計模式,於是就看《大話設計模式》,至七月十多號,大概看了一百多頁後,感覺有點難,有點看不下去的感覺,於是上網找其他的好方法,無意間發現了李建忠老師的《c#設計模式縱橫談》系列講座,微軟的web cast課程,主要講解gof的23個設計模式,每個一講,加上一頭一尾,共25講,試聽了一節課後,感覺很有用,於是就抽時間去邊聽課邊看書,並在我的部落格里寫下筆記,依賴加深印象,二來可以督促我的進度。。。

三個月以來,總算把設計模式學完一遍了,原計畫是兩個月學完(一星期三個模式),由於。。。計畫兩個月學完實際花了三個月,感觸多多,收穫多多——對c#語言有了更進一步的認識,對oo的思想有了更全面的了解。。。

下一步在設計模式方面的計畫:鞏固並運用設計模式,鞏固:把《大話設計模式》,《設計模式》,《設計模式——可復用的面向對象基礎》,《敏捷軟體開發:原則、模式與實踐》這些書再結合起來系統的看一看,當然還會去買一些我手頭上沒有的關於設計模式的書;運用:部門前幾天也提倡用c#來改版vb程式,我想這是一個很好的平台,正好有機會把理論的東西在實際中套用,理論加實際——唯一的學習方法。。。

下面對各個模式再簡單總結一下:

1、創建型模式:

singleton:解決的是實例化對象的個數的問題,比如抽象工廠中的工廠、對象池等,除了singleton之外,其他創建型模式解決的都是 new 所帶來的耦合關係。

abstract factory:創建一系列相互依賴對象,並能在運行時改變系列。

factory method:創建單個對象,在abstract factory有使用到。

prototype:通過拷貝原型來創建新的對象。

factory method,abstract factory, builder都需要一個額外的工廠類來負責實例化“一邊對象”,而prototype則是通過原型(一個特殊的工廠類)來克隆“易變對象”。

如果遇到“易變類”,起初的設計通常從factory method開始,當遇到更多的複雜變化時,再考慮重構為其他三種工廠模式(factory method,abstract factory, builder)。

2、結構性模式

adapter:注重轉換接口,將不吻合的接口適配對象,用於舊代碼復用、類庫遷移等。

bridge:注重實現抽象和實現的分離,支持對象多維度的變化。

composite:注重同意接口,將“一對多”的關係轉化為“一對一”的關係,禁止對象容器內部實現結構,實現對象和對象容器使用的一致性。

decorator:注重穩定接口,在此前提下為對象擴展功能,實現對象功能的擴展,避免子類膨脹。

facade:注重簡化接口,禁止各子系統的複雜性,提供更高層接口供客戶訪問。

flyweight:注重保留接口,在內部使用共享技術對對象存儲進行最佳化(通過共享大量細粒度對象,提供系統性能)。