【設計模式】創建型模式/結構型模式/行爲型模式概述

複習設計模式有兩週了,有必要重新把設計模式的整體結構梳理一下,在此摘錄劉偉老師的教材中部分知識點,做個筆記。

一、設計模式的分類

根據其目的(模式是用來做什麼的)可分爲創建型 (Creational)結構型(Structural)行爲型 (Behavioral)三種:
創建型模式主要用於創建對象
結構型模式主要用於處理類或對象的組合
行爲型模式主要用於描述對類或對象怎樣交互和怎樣分配職責
根據範圍,即模式主要是用於處理類之間關係還是處理對象之間的關係,可分爲類模式對象模式兩種:
類模式處理類和子類之間的關係,這些關係通過繼承建立,在編譯時刻就被確定下來,是屬於靜態的。
對象模式處理對象間的關係,這些關係在運行時刻變化,更具動態性。

二、GoF設計模式

創建型模式
  • 抽象工廠模式(Abstract Factory)
  • 建造者模式(Builder)
  • 工廠方法模式(Factory Method)
  • 原型模式(Prototype)
  • 單例模式(Singleton)
結構型模式
  • 適配器模式(Adapter)
  • 橋接模式(Bridge)
  • 組合模式(Composite)
  • 裝飾模式(Decorator)
  • 外觀模式(Facade)
  • 享元模式(Flyweight)
  • 代理模式(Proxy)
行爲型模式
  • 職責鏈模式(Chain of Responsibility)
  • 命令模式(Command)
  • 解釋器模式(Interpreter)
  • 迭代器模式(Iterator)
  • 中介者模式(Mediator)
  • 備忘錄模式(Memento)
  • 觀察者模式(Observer)
  • 狀態模式(State)
  • 策略模式(Strategy)
  • 模板方法模式(Template Method)
  • 訪問者模式(Visitor)

三、創建型模式

創建型模式(Creational Pattern)對類的實例化過程進行了抽象,能夠將軟件模塊中對象的創建和對象的使用分離。爲了使軟件的結構更加清晰,外界對於這些對象只需要知道它們共同的接口,而不清楚其具體的實現細節,使整個系統的設計更加符合單一職責原則。
創建型模式在創建什麼(What)由誰創建(Who)時創建(When)等方面都爲軟件設計者提供了儘可能大的靈活性。創建型模式隱藏了類的實例的創建細節,通過隱藏對象如何被創建和組合在一起達到使整個系統獨立的目的

四、結構型模式

描述如何將類或者對象結合在一起形成更大的結構,就像搭積木,可以通過簡單積木的組合形成複雜的、功能更爲強大的結構。
結構型模式可以分爲類結構型模式對象結構型模式
類結構型模式關心類的組合,由多個類可以組合成一個更大的系統,在類結構型模式中一般只存在繼承關係和實現關係。
對象結構型模式關心類與對象的組合,通過關聯關係使得在一個類中定義另一個類的實例對象,然後通過該對象調用其方法。根據“合成複用原則”,在系統中儘量使用關聯關係來替代繼承關係,因此大部分結構型模式都是對象結構型模式

五、行爲型模式

行爲型模式(Behavioral Pattern)是對在不同的對象之間劃分責任和算法的抽象化
行爲型模式不僅僅關注類和對象的結構,而重點關注它們之間的相互作用通過行爲型模式,可以更加清晰地劃分類與
對象的職責,並研究系統在運行時實例對象之間的交互。在系統運行時,對象並不是孤立的,它們可以通過相互通信與協作完成某些複雜功能,一個對象在運行時也將影響到其他對象的運行。
行爲型模式分爲類行爲型模式對象行爲型模式兩種:
類行爲型模式:類的行爲型模式使用繼承關係在幾個類之間分配行爲,類行爲型模式主要通過多態等方式來分配父類與子類的職責。
對象行爲型模式:對象的行爲型模式則使用對象的聚合關聯關係來分配行爲,對象行爲型模式主要是通過對象關聯等方式來分配兩個或多個類的職責。根據“合成複用原則”,系統中要儘量使用關聯關係來取代繼承關係,因此大部分行爲型設計模式都屬於對象行爲型設計模式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章