設計模式--總綱

愛穿襯衫的程式設計師發表於2018-12-16

前輩的輪子-圖說設計模式
前輩的輪子-設計模式
前輩的輪子-Android原始碼與設計模式

物件導向的六大原則

單一職責原則(SRP):一個類只負責一個職責,不要存在多個導致類變更的原因
開閉原則(OCP): 對擴充套件開放,對修改封閉
里氏替換原則(LSP):子類必須能夠替換他們的基類
依賴倒置原則(DIP):提高靈活性,高層不依賴低層,兩個都應該依賴於抽象;抽象不依賴與細節,細節依賴抽象
迪米特原則(LOD):類間解耦,類之間聯絡儘可能少
介面隔離原則(ISP):客戶端不應該依賴它不需要的介面,多用組合,少用繼承

設計模式主要分為三類(共23種):

  1. 建立型設計模式(5種)
    單例模式、工方法模式、抽象工廠模式、建造者模式、原型模式
      建立型模式(Creational Pattern): 對類的例項化過程進行了抽象,能夠將軟體模組中物件的建立和物件的使用分離。為了使軟體的結構更加清晰,外界對於這些物件只需要知道它們共同的介面,而不清楚其具體的實現細節,使整個系統的設計更加符合單一職責原則。
    建立型模式隱藏了類的例項的建立細節,通過隱藏物件如何被建立和組合在一起達到使整個系統獨立的目的。

  2. 結構型設計模式(7種)
    介面卡模式、裝飾模式、代理模式、外觀模式、橋接模式、組合模式、享元模式
      結構型模式(Structural Pattern)描述如何將類或者物件結合在一起形成更大的結構,就像搭積木,可以通過簡單積木的組合形成複雜的、功能更為強大的結構。
    結構型模式可以分為類結構型模式和物件結構型模式:

  • 類結構型模式: 關心類的組合,由多個類可以組合成一個更大的系統,在類結構型模式中一般只存在繼承關係和實現關係。
  • 物件結構型模式: 關心類與物件的組合,通過關聯關係使得在一個類中定義另一個類的例項物件,然後通過該物件呼叫其方法。

根據“合成複用原則”,系統中儘量使用關聯關係來替代繼承關係,因此大部分結構型模式都是物件結構型模式。

  1. 行為型設計模式(11種)
    策略模式、模板方法模式、觀察者模式、迭代器模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式
      行為型模式(Behavioral Pattern)是對在不同的物件之間劃分責任和演算法的抽象化。
      行為型模式不僅僅關注類和物件的結構,而且重點關注它們之間的相互作用。 通過行為型模式,可以更加清晰地劃分類與物件的職責,並研究系統在執行時例項物件 之間的互動。在系統執行時,物件並不是孤立的,它們可以通過相互通訊與協作完成某些複雜功能,一個物件在執行時也將影響到其他物件的執行。

行為型模式分為類行為型模式物件行為型模式兩種:

  • 類行為型模式:類的行為型模式使用繼承關係在幾個類之間分配行為,類行為型模式主要通過多型等方式來分配父類與子類的職責。
  • 物件行為型模式:物件的行為型模式則使用物件的聚合關聯關係來分配行為,物件行為型模式主要是通過物件關聯等方式來分配兩個或多個類的職責。

根據“合成複用原則”,系統中要儘量使用關聯關係來取代繼承關係,因此大部分行為型設計模式都屬於物件行為型設計模式。

©愛穿襯衫的程式設計師

相關文章