設計模式 行為型模式

2021-10-07 14:20:48 字數 989 閱讀 2610

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

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

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

模板方法(template method)模式:定義乙個操作中的演算法骨架,將演算法的一些步驟延遲到子類中,使得子類在可以不改變該演算法結構的情況下重定義該演算法的某些特定步驟。

策略(strategy)模式:定義了一系列演算法,並將每個演算法封裝起來,使它們可以相互替換,且演算法的改變不會影響使用演算法的客戶。

命令(command)模式:將乙個請求封裝為乙個物件,使發出請求的責任和執行請求的責任分割開。

狀態(state)模式:允許乙個物件在其內部狀態發生改變時改變其行為能力。

觀察者(observer)模式:多個物件間存在一對多關係,當乙個物件發生改變時,把這種改變通知給其他多個物件,從而影響其他物件的行為。

中介者(mediator)模式:定義乙個中介物件來簡化原有物件之間的互動關係,降低系統中物件間的耦合度,使原有物件之間不必相互了解。

迭代器(iterator)模式:提供一種方法來順序訪問聚合物件中的一系列資料,而不暴露聚合物件的內部表示。

訪問者(visitor)模式:在不改變集合元素的前提下,為乙個集合中的每個元素提供多種訪問方式,即每個元素有多個訪問者物件訪問。

備忘錄(memento)模式:在不破壞封裝性的前提下,獲取並儲存乙個物件的內部狀態,以便以後恢復它。

直譯器(interpreter)模式:提供如何定義語言的文法,以及對語言句子的解釋方法,即直譯器。

以上 11 種行為型模式,除了模板方法模式和直譯器模式是類行為型模式,其他的全部屬於物件行為型模式。

設計模式(結構型模式 行為型模式)

一 結構型模式 1.介面卡模式 通過乙個具體類把適配者適配到目標介面中,使得原本不相容的那些類可以一起工作。舉個例子 可以把二分查詢和快排 適配者 封裝到乙個dataoperation 目標介面 介面中,再操作adapter 介面卡 來進行操作。adapter quicksort sortobj,b...

設計模式 行為型模式總結

什麼是行為型模式 行為型模式 行為型模式涉及到演算法和物件間職責的分配。它不僅描述物件或者類的模式,還描述它們之間的通訊模式。這些設計模式刻畫了在執行難以跟蹤的複雜的控制流。它們將你的注意力從控制流轉移到物件之間的 上來。分類 行為物件模式 封裝物件 封裝變化是很多設計模式的主題,當乙個程式的某個方...

設計模式學習 行為型模式

行為型模式包含以下種類 策略模式 模板方法模式 狀態模式 觀察者模式 備忘錄模式 中介者模式 命令模式 訪問者模式 責任鏈模式 迭代器模式 直譯器模式 學習中 1 策略模式 strategy 通過組合的方式實現策略,context環境類中儲存乙個策略類的指標,通過設計多個具體策略類來實現演算法。缺點...