設計模式類別 | Design Pattern

設計模式主要可以分為三大類別:

classification.svg

  • 創建型模式(Creational Design Patterns):

    • 這些模式專注於物件的創建過程。它們將物件的實例化過程抽象化,有助於使系統不依賴於物件的創建、組合和表示方式。
    • 創建型模式提供一種在隱藏創建邏輯的同時創建物件的方法,而不是直接使用 new 運算符。
    • 這在決定特定使用案例需要創建哪些物件時提供了更大的靈活性。
    • 一些常見的創建型模式包括:
      1. 單例模式
      2. 工廠方法模式
      3. 抽象工廠模式
      4. 建造者模式
      5. 原型模式
  • 結構型模式(Structural Design Patterns):

    • 結構型模式關注類別和物件的組合方式。
    • 它們有助於使用類別和物件形成大型結構,同時確保結構具有可擴展性、效率和可維護性。
    • 結構型模式著重於簡化設計,方法是識別實體之間的關係,並將它們組織成一個有凝聚力的結構。
    • 它們通過組合接口或實現來促進軟體設計。
    • 一些常見的結構型模式包括:
      1. 適配器模式
      2. 橋接模式
      3. 組合模式
      4. 裝飾器模式
      5. 外觀模式
      6. 享元模式
      7. 代理模式。
  • 行為型模式(Behavioral Design Patterns):

    • 行為型模式負責物件之間的有效溝通和職責分配。
    • 它們關注物件如何相互作用和通信,以及如何在系統中組織控制流程。
    • 行為型模式定義了物件之間通信的協議,並幫助分配職責,以確保系統高效、可維護和可擴展。
    • 通過促進鬆散耦合和關注點分離,行為型模式提高了軟體系統的靈活性和適應性。
    • 一些廣泛使用的行為型模式包括
      1. 責任鏈模式
      2. 命令模式
      3. 解釋器模式
      4. 迭代器模式
      5. 中介者模式
      6. 備忘錄模式
      7. 觀察者模式
      8. 狀態模式
      9. 策略模式
      10. 模板方法模式
      11. 訪問者模式。

行為型設計模式在物件間通訊和責任分配的角色

行為型設計模式主要關注物件之間的有效溝通和責任分配。它們著重於物件如何交互和通信,以及如何在系統中組織控制流程1。換句話說,它們定義了物件之間通訊的協議,並協助分配職責,以確保系統的效率、可維護性和可擴展性。

responsibility.svg

行為型設計模式通過以下方式在物件間通訊和責任分配中扮演重要角色:

  • 促進鬆散耦合: 行為型設計模式鼓勵物件之間的鬆散耦合,這意味著物件之間的依賴性降低。 鬆散耦合的系統更容易維護和修改,因為對一個物件的更改不太可能影響其他物件。
  • 定義清晰的通訊協議: 行為型設計模式建立物件之間通訊的明確協議。 這些協議有助於確保物件可以有效地交互,而無需了解彼此的內部細節。
  • 分配責任: 行為型設計模式幫助開發者將責任分配給適當的物件。 這可以提高系統的模組化程度和可重用性。

role.svg

一些常用的行為型設計模式及其在物件間通訊和責任分配中的角色包括:

  • 責任鏈模式: 允許將請求沿著物件鏈傳遞,直到找到可以處理該請求的物件。 這有助於避免將發送者與接收者耦合在一起。
  • 命令模式: 將請求封裝成物件,允許參數化客戶端物件、將請求排隊或記錄請求,以及支援可撤銷的操作。
  • 觀察者模式: 定義物件之間一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都會收到通知。 這有助於物件之間保持同步,而無需緊密耦合。
  • 策略模式: 定義了一系列演算法,並將每個演算法封裝起來,使它們可以互換。 這允許在運行時選擇不同的演算法,從而提高系統的靈活性。
  • 中介者模式: 用一個中介物件來封裝一系列物件的交互。 中介者使各個物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。

總結,行為型設計模式提供了一套強大的機制,用於管理物件之間的通訊和責任分配。通過採用這些模式,開發者可以構建更加靈活、可維護和可擴展的軟體系統。