設計模式心得體會

我對gof的23個設計模式雖然都有看過,但是只有理解,實現,套用及思考之後,才能真正體會其精妙之處,至今體會較深的有以下幾個模式:1. strategy——封裝系列“算法”,讓它們之間可以相互替換,“算法”並不是單指數據結構中的算法,在實踐中,它幾乎可以封裝任何類型的規則,這使得策略模式的運用極其廣泛;2. template method——有人說是用的做多的模式,只要有抽象類的地方,都可以看到這個模式,它通過把不變行為移到父類中去,去除子類中的重複代碼,從而提供了一個很好的代碼復用平台;3. facade——提供了對基礎架構的統一訪問,減少複雜性,在web編程者中的三層架構,就是此思想,每一層都封裝好一部分功能,提供給上一層統一的方法調用,整個framework體系就是facade模式的封裝,隨著1.0升級到3.5,越來越多複雜的高級功能被封裝,可以說facade無處不在;4. abstract factory——提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類,咋一看,太抽象了,說個例子,在三層架構中,bll層對dal層的調用會直接用到dal層中的類,如果dal層是分別對sql server,oracle的訪問,bll層需要根據實際情況決定實例化哪一個dal層中的類,我們又希望在兩種dal層切換時,bll層和ui層都不做改變,那么可在bll層和dal層中增加接口層(體現了“抽象”的精神,或者說是“面向接口編程”的最佳體現)和抽象工廠(dalfactroy),讓它來實例化dal層中的實例;5. singleton——確保一個類僅有一個實例,並提供一個訪問它的全局訪問點,如單件窗體,點一下menu,彈出一個窗體(實例),在關閉這個新窗體之前,再次點擊該menu,不會再次出現同樣的彈出窗體(實例)。。。篇幅有限,其他模式或多或少都有點感覺。

最後,引用《設計模式解析》書中的一句話:設計模式體現的是一種思想,而思想是指導行為的一切,理解和掌握了設計模式,並不是說記住了23種(或更多)設計場景和解決策略(實際上這也是很重要的一筆財富),實際接受的是一種思想的薰陶和洗禮,等這種思想融入到了你的思想中後,你就會不自覺地使用這種思想去進行你的設計和開發,這一切才是最重要的。