C#物件導向模式設計第二十五講(最後一講):設計模式總結

來源:互聯網
上載者:User

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:注重保留介面,在內部使用共用技術對Object Storage Service進行最佳化(通過共用大量細粒度對象,提供系統效能)。

Proxy:注重假借介面,通過增加間接代理,實現更多控制,屏蔽複雜性。

3 、行為型模式

Template Method:封裝演算法結構,定義演算法骨架,支援演算法子步驟變化。

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

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

Memento:注重封裝對象狀態變化,支援狀態儲存、恢複。

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

Chain of Responsibility:注重封裝對象責任,支援責任的變化,通過動態構建職責鏈,實現交易處理。

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

Iterator:注重封裝特定領域變化,支援集合的變化,屏蔽集合對象內部複雜結構,提供客戶程式對它的透明遍曆。

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

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

Visitor:注重封裝對象操作變化,支援在運行時為類結構添加新的操作,在類階層中,在不改變各類的前提下定義作用於這些類執行個體的新的操作。

正確對待模式:

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

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

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

《完》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.