行為型模式

2021-09-23 14:31:57 字數 1487 閱讀 2932

1.職責鏈模式(chain of responsibility)

定義:避免請求傳送者與接收者耦合在一起,讓多個物件都又肯接受請求,將這些物件鏈結成一條鏈,讓多個物件都有可能接收邀請,直到有物件處理它為止。職責鏈是一種物件行為型模式

結構圖:

抽象處理者handler

案例:採購單

優點:系統增加乙個新的具體請求處理者時無須修改原有系統的**,只需在客戶端重新建鏈即可,從這一點來看是符合「開閉原則"的;

物件無序知道是哪乙個物件處理其請求,物件僅需知道該請求會被處理即可。

缺點:由於乙個請求沒有明確的接收者,那麼就不能保證它一定被處理,該請求可能一直到鏈的末端都得不到處理。如果建鏈不當會造成死迴圈。

2.命令模式(command pattern)——請求傳送者與接收者解耦

定義:將乙個請求封裝為乙個物件,從而讓我們可用不同的請求對客戶進行引數化;對請求排隊或者記錄請求日誌,以及支援可撤銷的操作。命令模式是一種物件行為型模式,其別名為動作模式或事務模式。

結構圖:

invoker(呼叫者) 呼叫者即請求傳送者,它通過命令物件來執行請求

命令模式是一種使用頻率非常高的設計模式,它可以將請求者與接收者解耦,請求傳送者通過命令物件來間接引用請求接受者,使得系統具有更好的靈活性和可擴充套件性。

優點:降低系統的耦合度。新命令可以很容易地加入到系統中。

缺點:針對每乙個對請求接收者的呼叫操作都需要設計乙個具體命令類,因此在某些系統中可能需要提供大量的具體類,這將影響命令模式的使用。

3.直譯器模式 interpreter pattern——自定義語言的實現

定義:定義乙個語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的」語言「是指使用規定格式和語法的**。直譯器是一種類行為型模式。

3.直譯器模式——interpreter pattern 自定義語言的實現

定義:直譯器模式:定義乙個語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的「語言「是指使用規定格式和語法的**。直譯器模式是一種類行為型模式。

優點:易於改變和擴充套件文法。實現文法較為容易

缺點:對於複雜文法難以維護,執行效率低。

行為型模式

行為型模式用於描述程式在執行時複雜的流程控制,即描述多個類或物件之間怎樣相互協作共同完成單個物件都無法單獨完成的任務,它涉及演算法與物件間職責的分配。行為型模式分為類行為模式和物件行為模式,前者採用繼承機制來在類間分派行為,後者採用組合或聚合在物件間分配行為。由於組合關係或聚合關係比繼承關係耦合度低...

行為型模式

行為型模式 1.template method模板方法 定義乙個操作種的演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。2.command 命令模式 將以個請求封裝成乙個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌...

行為型模式

模式動機 strategy pattern 在完成乙個任務時可能有多種方式,具體使用哪種方式最有效,需要視條件而定,不同條件下所選擇的策略也有所不同,這就需要在乙個環境中對當前的情況做出各種判斷,在程式設計中表現為分支結構的實現,即在乙個環境類中通過不同分支來決定使用哪種策略,這種將實現策略與當前環...