→保證一個類僅有一個實例,並提供一個訪問它的全局點。
(轉載)無廢話C#設計模式之三:Abstract Factory
→提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。
(轉載)無廢話C#設計模式之四:Factory Method
→定義一個用於創建對象的接口,讓子類決定將哪一個類實例化。Factory Method讓一個類的實例化延遲到子類。
→用原型實例指定創建對象的種類,並且通過拷貝這個原型來創建新的對象。
(轉載)無廢話C#設計模式之六:Builder
→將一個複雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。
→將一個類的接口轉換成客戶希望的另一個接口,使得原來由於接口不兼容而不能一起工作的那些類可以一起工作。
→爲子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,使得這個子系統更加容易使用。
→爲其他對象提供一個代理以控制對這個對象的訪問。
→運用共享技術有效的支持大量細粒度的對象。
→將對象組合成樹形結構以表示“部分-整體”的層次結構。Composite使得客戶對單個對象和複合對象的使用具有一致性。
→將抽象部分與它的實現部分分離,使之可以獨立變化。
→動態地給一個對象添加一些額外的職責。就擴展功能而言,Decorator模式比生成子類方式更加靈活。
(轉載)無廢話C#設計模式之十四:Template Method
→定義一個操作中的算法骨架,而將這些算法的具體實現的代碼延遲到子類中完成。
→定義一系列的算法,把他們封裝起來,並可以相互替換,使算法獨立於客戶。
→允許一個對象再內部狀態改變的時候改變它的行爲。對象看起來似乎修改了所屬的類。
(轉載)無廢話C#設計模式之十七:Chain Of Resp.
→爲解除請求的發送者和接收者之間的耦合,而使多個對象有機會處理這個請求。將這些請求連成一個鏈,並沿着這條鏈傳遞該請求,直到有個對象處理它。
→將一個請求封裝爲一個對象,從而使你可以用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可以取消的操作。
→定義對象間的一種一對多的依賴關係,以便當一個對象的狀態發生變化時依賴於它的所有的對象都得到通知和刷新。
→用一箇中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式相互引用,從而使得耦合鬆散,可以獨立改變相互之間的交互。
→標識一個作用於某對象結構中的各元素的操作,在不改變各元素的類的前提下定義作用於這個元素的新操作。
Interpreter
→給定一個語言,定義它的文法的一種表示,並定義一個解釋器用於解釋特定文法。
Iterator
→提供一種方法順序訪問一個聚合對象中的各種元素,而無需暴露該對象的內部表示。