1. 程式人生 > >【設計模式】——總結

【設計模式】——總結

【前言】

生活還在繼續,程式設計也不會結束,而我們的設計模式的學習也要暫時告一段落了

【正文】

設計模式分為三種類型,以下面導圖為例

一、建立型模型:(物件怎麼來)提供了一種在建立物件的同時隱藏建立邏輯的一種方式,而不是使用new運算子直接例項化物件。使得程式在判斷針對某個給定例項需要建立那些物件時更加靈活。

  • 工廠模式(Factory Pattern):定義一個用於建立物件的介面,讓子類決定例項化哪一個類,工廠模式使一個類的例項化延遲到其子類

  • 抽象工廠模式(Abstract Factory Pattern):提供一個建立一系列或相關依賴物件的介面,而無須指定它們具體的類。

  • 單例模式(Singleton Pattern):保證一個類僅有一個例項,並提供一個訪問它的全域性訪問點

單例模式

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

  • 建造者模式

  • 原型模式(Prototype Pattern):用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件

原型模式

二、結構模型:(物件和誰有關)關注類和物件的組合。繼承的概念被用來組合介面和定義組合物件獲得新功能的方式

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

介面卡模式

  • 橋接模式(Bridge Pattern):將抽象部分與它的實現部分分離,使他們都可以獨立地變化

橋接模式

  • 組合模式(Composite Pattern):將物件組合成樹形結構以表示‘部分-整體’的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性

組合模式

  • 裝飾器模式(Decorator Pattern):動態地給一個物件新增一些額外的職責,就增加功能來說,裝飾模式相比生成子類更加靈活

裝飾模式

  • 外觀模式(Façade Pattern):為子系統中的一組介面提供一個一致的介面,外觀模式定義了一個高層介面,這個介面使得這以子系統更加容易使用

外觀模式

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

享元模式

  • 代理模式(Proxy Pattern):為其他物件提供一種代理以控制對這個物件的訪問

代理模式

三、行為型模式:(物件與物件在幹嘛)關注物件之間的通訊

  • 責任鏈模式(Chain of Responsibility Pattern):使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係,將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個物件處理他為止

責任鏈模式

  • 命令模式(Command Pattern):將一個請求封裝為一個物件,從而使用不同的請求對客戶進行引數化;可以對請求排隊或紀錄請求日誌,以及支援可撤銷的操作

命令模式

  • 觀察者模式(Observer Pattern):定義物件間的一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新

觀察者模式

  • 狀態模式(State Pattern):允許一個物件在其內部狀態改變時改變它的行為,讓物件看起來似乎修改了它的類

  • 狀態模式

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

模板模式

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

訪問者模式

  • 直譯器模式(Interpreter Pattern):給定一個語言,定義他的文法的一種表示,並定義一個直譯器,這個直譯器使用該表示來解釋語言中的句子

直譯器模式

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

  • 中介者模式(Mediator Pattern):用一箇中介物件來封裝一些列的物件互動。中介者使各物件不需要顯示地相互引用,從而使其耦合鬆散,而且可以獨立地改變他們之間的互動

中介者模式

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

備忘錄模式

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

策略模式

【結尾】

祝願您在學習設計模式的過程中,讀有所思,閱有所獲。也許咋們的面向程式設計之路或許才剛剛開始,相信通過你我的努力人生會更加精彩。