最近看了一下C#設計模式,簡單做了點筆記。在此也記錄一下,權當備忘。
C#設計模式大體上講分為三類,即:建立模式,結構模式和行為模式
建立模式:單件模式、原廠模式、抽象原廠模式、產生器模式、原型模式。
結構模式:適配器模式、橋接模式、組成模式、裝飾模式、面板模式、享元模式、代理模式。
行為模式:中介者模式、命令模式、備忘錄模式、狀態模式、策略模式、解譯器模式、迭代器模式、觀察者模式、訪問者模式、模板方法模式。
第一類:
單件模式(Singleton Pattern):保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點。例:跨表單訪問同一個執行個體。
原廠模式(Factory Pattern):根據提供給工廠的資料,從一系列相關的類中選擇一個類執行個體並返回。例:Oracle,SQL Server 訪問類的選擇
抽象原廠模式(Abstract Factory Pattern):為一組類返回一個工廠。
產生器模式(Builder Pattern):根據提供給他的資料及表示,組裝成新的對象。 例:根據使用者不同的選擇顯示不同控制項。
原型模式(Prototype Pattern):由結果到一個新的結果。例:根據由執行的SQL 查詢結果得到另一個結果。與產生器類似工廠,兩者都返回由許多方法的對象組成的類。差別:抽象工廠返回一系列相關的類。產生器是根據提供給它的資料一步一步地構建一個複雜的對象。
第二類:
適配器模式(Adapter Pattern):將一個類將一種介面轉換成另一種介面。
橋接模式(Bridge Pattern):類的介面和它的實現相分離,無需改變調用者的代碼即可替代實現的過程。
組成模式(Composite Pattern):組合就是對象的結合。可以構建部分-整體的關係或資料的樹形關係。
裝飾模式(Decorator Pattern):用一個類封裝給定的類改變單個對象的行為,但不需要建立一個新的衍生類別。
面板模式(Facde Pattern):可以將一系統複雜的類封裝成一個簡單的封閉介面。
享元模式(Flyweight Pattern):通過共用(把參數移動外部)大幅地減少單個執行個體的數目。
代理模式(Proxy Pattern):為一個複雜的對象提供一個簡單的佔位對象。
第三類:
中介者模式(Mediator Pattern):中介者做為唯一瞭解其它類的一個,簡化了通訊.促進類之音的鬆散便於修改維護。每個和中介者通訊的控制項都稱為同事。
應用:視覺化介面的程式中,當面臨多個對象之間複雜的通訊時,可使用。
命令模式(Command Pattern):只將請求轉寄給特定的對象。目的:將程式的介面和操作分離。缺點:增加了散亂的小類
備忘錄模式(Memento Pattern):儲存對象的資料以便以後能夠恢複它。發起人(Originator):是一個對象,我們要儲存它的狀態。備忘錄(Memento):是另外一個對象,它儲存了發起人的狀態。負責人(Caretaker):管理狀態儲存的時機,儲存備忘錄,並且如果需要的話,使用備忘錄恢複發起人的狀態。
狀態模式(State Pattern):用一個對象表示程式的狀態,並通過轉換對象來轉換程式的狀態。以前,根據傳進來的參數執行不同的計算或顯示不同的內容。switch-case/if else狀態模式要取代它。
策略模式(Stractegy Pattern):與狀態模式相似,根據需要選擇一封裝在Context磁碟機類。
觀察者模式(Observer Pattern):以多種形式顯示資料。在觀察者模式中,把資料稱為目標(Subject),把每種顯示稱為觀察者(Observer)
解譯器模式(Interpreter Pattern):為某種語言定義一個文法,並用該文法解釋語言中的語句。
適用性:
1.當讀者需要一個命令直譯器分析使用者命令時。
2.當程式需要分析一個代數串時。
3.發程式要產生各種形式的輸出時。
迭代器模式(Iterator Pattern):允許使用一個標準的介面順序訪問一個資料列表或集合。
模板方法模式(Template Method Pattern):先建立一個父類,把其中一個或多個方法留個子類實現。是一種非常簡單又常用的模式。思想:將一個類的基本部分抽取出來放到一個基類中,不必重出現在一個衍生類別中。
職責鏈(Chain of Responsibility):允許多個類處理同一個請求。
要點:
1.鏈的組織是從最特珠的到最一般的。
2.不能保證在任何情況下都會有響應。
職責鏈用於分析器與編譯器。