設計模式心得體會

proxy:注重假借接口,通過增加間接代理,實現更多控制,禁止複雜性。

3 、行為型模式

template method:封裝算法結構,定義算法骨架,支持算法子步驟變化。

strategy:注重封裝算法,支持算法的變化,通過封裝一系列算法,從而可以隨時獨立於客戶替換算法。

state:注重封裝與狀態相關的行為,支持狀態的變化,通過封裝對象狀態,從而在其內部狀態改變時改變它的行為。

memento:注重封裝對象狀態變化,支持狀態保存、恢復。

mediator:注重封裝對象間的互動,通過封裝一系列對象之間的複雜互動,使他們不需要顯式相互引用,實現解耦。

chain of responsibility:注重封裝對象責任,支持責任的變化,通過動態構建職責鏈,實現事務處理。

command:注重將請求封裝為對象,支持請求的變化,通過將一組行為抽象為對象,實現行為請求者和行為實現者之間的解耦。

iterator:注重封裝特定領域變化,支持集合的變化,禁止集合對象內部複雜結構,提供客戶程式對它的透明遍歷。

interpreter:注重封裝特定領域變化,支持領域問題的頻繁變化,將特定領域的問題表達為某種語法規則下的句子,然後構建一個解釋器來解釋這樣的句子,從而達到解決問題的目的。

observer:注重封裝對象通知,支持通信對象的變化,實現對象狀態改變,通知依賴它的對象並更新。

visitor:注重封裝對象操作變化,支持在運行時為類結構添加新的操作,在類層次結構中,在不改變各類的前提下定義作用於這些類實例的新的操作。

正確對待模式:

設計模式建立在對系統變化點的基礎上進行,哪裡有變化,哪裡就套用設計模式。

設計模式應該以演化的方式來獲得,系統的變化點往往是經過不斷演化才能準確定位。

不能為了模式而模式,設計模式是一種軟體設計的軟力量,而非規範標準,不應誇大設計模式的作用。

設計模式心得體會(2):

從一開始學習設計模式至今已半年有餘了,第一次接觸設計模式是一次不經意間在網上看到《大話設計模式》一書,看了前言了第一章後,就感覺到其誘惑力對於一個程式設計師來說,是無比巨大的。大概是去年十月份的時候,部門決定成立讀書會,系統學習設計模式。

通過學習設計模式,除了學習到“一些設計模式”,還讓我進一步熟悉、鞏固了面向對象思想,進一步熟悉了c#語言。。。我曾多次構想,我們如果引入面向對象思想,並結合設計模式來重寫或改善我們的系統(必須重寫,雖說設計模式只是一種思想,語言只是實現而已,但是選擇一門好的語言,無疑也是非常重要的,而vb6在面向對象方面卻有很大欠缺甚至不具備其條件),那么我們的系統將會像目前一樣需要那么多人來維護嗎?

《大話設計模式》一書其實是對gof的《設計模式——可復用面向對象軟體的基礎》一書的“翻譯”,讓人更容易理解,用通俗易懂的語言闡述軟體設計過程中的一些“模式”,在某種特定環境下,用最好的設計方法(代碼高內聚,低耦合,使其有良好的可擴展性和可維護性)達到我們的目的,或許其方法有很多很多,但是尋找到最好的方法卻不是件容易的事,設計模式是對前人的設計經驗的一個總結,告訴我們在某種特定的環境下,這樣的設計師最好的,學習設計模式有助於我們在設計軟體的過程中少走很多彎路。