行為型模式概述(行為型模式的分類)——小馬同學@Tian

小馬同學@Tian發表於2020-11-30

行為型模式概述(行為型模式的分類)

行為型模式用於描述程式在執行時複雜的流程控制,即描述多個類或物件之間怎樣相互協作共同完成單個物件都無法單獨完成的任務,它涉及演算法與物件間職責的分配。

行為型模式分為類行為模式和物件行為模式,前者採用繼承機制來在類間分派行為,後者採用組合或聚合在物件間分配行為。由於組合關係或聚合關係比繼承關係耦合度低,滿足“合成複用原則”,所以物件行為模式比類行為模式具有更大的靈活性。

行為型模式是 GoF 設計模式中最為龐大的一類,它包含以下 11 種模式。

  1. 模板方法(Template Method)模式:定義一個操作中的演算法骨架,將演算法的一些步驟延遲到子類中,使得子類在可以不改變該演算法結構的情況下重定義該演算法的某些特定步驟。
  2. 策略(Strategy)模式:定義了一系列演算法,並將每個演算法封裝起來,使它們可以相互替換,且演算法的改變不會影響使用演算法的客戶。
  3. 命令(Command)模式:將一個請求封裝為一個物件,使發出請求的責任和執行請求的責任分割開。
  4. 職責鏈(Chain of Responsibility)模式:把請求從鏈中的一個物件傳到下一個物件,直到請求被響應為止。通過這種方式去除物件之間的耦合。
  5. 狀態(State)模式:允許一個物件在其內部狀態發生改變時改變其行為能力。
  6. 觀察者(Observer)模式:多個物件間存在一對多關係,當一個物件發生改變時,把這種改變通知給其他多個物件,從而影響其他物件的行為。
  7. 中介者(Mediator)模式:定義一箇中介物件來簡化原有物件之間的互動關係,降低系統中物件間的耦合度,使原有物件之間不必相互瞭解。
  8. 迭代器(Iterator)模式:提供一種方法來順序訪問聚合物件中的一系列資料,而不暴露聚合物件的內部表示。
  9. 訪問者(Visitor)模式:在不改變集合元素的前提下,為一個集合中的每個元素提供多種訪問方式,即每個元素有多個訪問者物件訪問。
  10. 備忘錄(Memento)模式:在不破壞封裝性的前提下,獲取並儲存一個物件的內部狀態,以便以後恢復它。
  11. 直譯器(Interpreter)模式:提供如何定義語言的文法,以及對語言句子的解釋方法,即直譯器。

以上 11 種行為型模式,除了模板方法模式和直譯器模式是類行為型模式,其他的全部屬於物件行為型模式,下面我們將詳細介紹它們的特點、結構與應用。

相關文章