天天看點

24種設計模式

Factory Pattern(工廠模式):1. 建立對象的接口,封裝對象的建立;2. 使具體化類的工作延遲到子類中。(維護一類對象)

24種設計模式

AbstractFactory Pattern(抽象工廠 模型):該模式将一組對象的建立封裝到一個用于建立對象的類中。(解決的問題:要建立一組或者互相依賴的對象)。

24種設計模式

Singleton Pattern(單例模式):該模式在面向純粹的面向對象的範式中用于建立唯一的執行個體,值得注意的是Singleton不能被執行個體化,是以将其構造函數聲明為protected或private類型。Singleton Pattern經常與Factory Pattern結合使用,因為Factory對象隻能有一個。

24種設計模式

Builder Pattern(建立者模式):将一個複雜的對象的建構與它的表示分離,使得同樣的建構構成可以建立不同的表示。如建築師畫圖紙,而勞工建造房屋。

24種設計模式

Prototype Pattern(原型模式):提供一個通過已存在對象進行新對象建立的接口(clone)。(淺拷貝和深拷貝)

24種設計模式

Bridge Pattern(橋梁模式):将抽象部分與實作部分分開實作,使他們都可以獨立地變化,并使用組合的方式将多元度的抽象方法聯系在一起。比如咖啡分小杯、中杯、大杯以及加奶和不加奶,則抽象部分為:小杯、中杯、大杯,行為為:加奶和不加奶。

24種設計模式

Adapter Pattern(擴充卡模式):适配就是由“源”到“目标”的适配,而當中連結兩者的關系就是擴充卡。它負責把“源”過度到“目标”。将一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不相容而不能一起工作的那些類可以一起工作。擴充卡模式分為兩種:① 面向類的設計模式;② 面向對象的設計模式。

① 面向類的擴充卡:該模式使用繼承和接口實作的方式複用需要擴充卡的類。

② 面向對象的擴充卡:該模式使用組合的方式實作需要複用的類。

24種設計模式

 Decorator模式(裝飾模式):動态地給一個對象添加一些額外的職責。

24種設計模式

Composite模式(組合模式):将對象組合成樹形結構以表示“部分-整體”的層次結構。Composite使得使用者對單個對象群組合對象的使用具有一緻性。

24種設計模式

Flyweight模式(享元模式):使用共享技術實作元素的共享。

24種設計模式

Facade模式(外觀模式):要求一個子系統的外部與其内部的通信必須通過一個統一的Facade對象進行。Facade模式提供一個高層次的接口,使得子系統更易于使用。  

24種設計模式

 Proxy模式(代理模式):不通過要操作對象本身去操作這個對象,而是通過一個能控制這個對象的對象(代理)去操作這個對象。

24種設計模式

Template模式(模闆模式):邏輯架構相同,但是對某一個業務邏輯(算法實作)在不同的對象中有不同的實作方式。Template采用繼承的方式實作這一點(strategy模式采用組合的方式去解決)。

24種設計模式

Strategy模式(政策模式):解決與Template模式相同(類似)的問題。Strategy模式将邏輯(算法)封裝到一個類中,通過組合的方式将具體算法的實作在組合對象中實作,通過委托的方式将抽象接口的實作委托給組合對象實作。

24種設計模式

State模式(狀态模式):人或事物有不同的狀态,每種狀态又有其特定的表現,在這些狀态下又使一個狀态轉移到另一個不同的狀态。

24種設計模式

Observer模式(觀察者模式):Observer模式定義對象間的一對多的依賴關系,當一個對象的狀态發生改變時, 所有依賴于它的對象都得到通知并被自動更新。(如視圖-文檔)

24種設計模式

Memento模式(備忘模式):在不破壞封裝性的情況下,捕獲并儲存一個類的内部狀态,可以利用該儲存的狀态實施恢複操作。

24種設計模式

Mediator模式(中介者模式):用一個中介對象來封裝一系列關于對象互動行為。如MVC中的Controller。

24種設計模式

Command模式(指令模式):指令模式是對指令的封裝。指令模式把發出指令的責任和執行指令的責任分割開,委派給不同的對象。

24種設計模式

Visitor模式(通路者模式):在不改變原有類結構的基礎上不斷添加新的功能。缺點:破壞了封裝性;Concretement擴充困難:每添加一個Element的子類,就要修改Visitor的接口,使得可以提供給這個新增加的子類的通路機制。

24種設計模式

Chain of Responsibility模式(職責鍊模式):Chain of Responsibility(CoR) 是用一系列類(classes)試圖處理一個請求request,這些類之間是一個松散的耦合,唯一共同點是在他們之間傳遞request. 也就是說,來了一個請求,A類先處理,如果沒有處理,就傳遞到B類處理,如果沒有處理,就傳遞到C類處理,就這樣象一個鍊條(chain)一樣傳遞下去。

24種設計模式

Iterator模式(疊代模式):提供一種方法通路一個容器(container)對象中各個元素,而又不需暴露該對象的内部細節。具體應用容器類(Vector、Set等)。

24種設計模式

Interpreter模式(解釋器模式):‍給定一個語言,定義它的文法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。

解釋器模式需要解決的是,如果一種特定類型的問題發生的頻率足夠高,那麼可能就值得将該問題的各個執行個體表述為一個簡單語言中的句子。這樣就可以建構一個解釋器,該解釋器通過解釋這些句子來解決該問題。執行個體應用:正規表達式。

24種設計模式

最後:各個模式的使用不一定是互相獨立,而是可以融合。

繼續閱讀