設計模式學習筆記(1) 認識23種模式

2022-03-24 11:23:08 字數 1628 閱讀 3962

下面來認識一下23種設計模式

adapter(介面卡模式):將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能在一起工作的那些類可以一起工作。

bridge(橋接模式):將抽象部分與它的實現部分分離,使它們可以獨立變化。

builder(建造者模式):將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

chain of responsibility(職責鏈模式):為解除請求的傳送者和接收者之間的耦合,而使多個物件都有機會處理這個請求。將這些物件連成一條鏈,並沿著這條連傳遞請求,直到有乙個物件處理它。

command(命令模式):將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可取消的操作。

composite(組合模式):將物件組合成樹形結構以表示「部分-整體」的層次結構。composit使得客戶對單個物件和復合物件的使用具有一致性。

decorator(裝飾模式):動態地給乙個物件新增一些額外的職責。就擴充套件功能而言,decorator模式比生成子類的方式更靈活。

facade(外觀模式):為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層次介面,這個介面使得這一子系統更加容易使用。

factory method(工廠方法模式):定義乙個用於建立一物件的介面,讓子類決定哪乙個類例項化。factory method使現代戰爭類的例項化延遲到其子類。

flyweight(享元模式):運用共享技術有效地支援大量粒度的物件。

interpreter(直譯器模式):給定個語言,定義它的文法的一種表示,並定義乙個直譯器,該直譯器使用該表示來解釋語言中的句子。

iterator(迭代器模式):提供一種方法順序訪問乙個聚合物件中各個元素,而又不需暴露該物件的內部表示。

mediator(中介者模式):用乙個中介物件來封裝一系列的物件互動同。中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。

memento(備忘錄模式):在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到儲存的狀態。

observer(觀察者模式):定義物件間的一種一對多的依賴關係,以便當乙個物件的狀態發生改變時,所有的依賴它的物件都得到通知並自動重新整理。

prototype(原型模式):用原型例項指定建立物件的種類,並且通過拷貝這個原型來建立新的物件。

proxy(**模式):為其它物件提供乙個**以控制這個物件的訪問。

singleton(單例模式):保證乙個類僅乙個例項,並提供乙個訪問它的全域性訪問點。

state(狀態模式):允許乙個物件在其內部狀改變時改變它們的行為。物件看起來似乎修改了它所屬的類。

strategy(策略模式):定義一系統演算法,把它們乙個個封裝起來,並且使它們可以相互替換。本模式使得演算法的變化可獨立於使用它的客戶。

template method(模板方法模式):定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。template method使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

visitor(訪問者模式):表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。

目錄 23種經典設計模式學習筆記

01.23種經典設計模式 11 單例模式 02.23種經典設計模式 12 原型模式 03.23種經典設計模式 13 工廠方法模式 04.23種經典設計模式 14 抽象工廠模式 05.23種經典設計模式 15 建造者模式 06.23種經典設計模式 15 建造者模式擴充套件 07.23種經典設計模式 2...

設計模式筆記 23種模式總結

23種設計模式分為三種類別 建立型模式 結構型模式 行為型模式 物件導向設計模式體現的是抽象的思想,類是對物件的抽象 抽象類是對類的抽象 介面是對行為的抽象。建造者模式 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示 工廠方法模式 定義乙個用於建立物件的介面,讓子類決定例項...

23種設計模式 Adapter 介面卡 設計模式

adapter模式主要應用於 希望復用一些現存的類,但是介面又與復用環境要求不一致的情況 在遺留 復用,類庫遷移等方面非常有用.using system using system.collections.generic using system.linq using system.text usin...