1. 程式人生 > >設計模式——責任鏈(Chain of Responsibility)

設計模式——責任鏈(Chain of Responsibility)

責任鏈模式 為 設計模式的 行為型模式的一種.

#責任鏈最常見的舉例是 申請費用:

程式猿 申請出差費用 (由於各位領導的審批額度有限,需要逐層審批):小組長—>專案經理—>部門經理—>Boss(小組長髮現額度過大,小組長向專案經理申請,專案經理髮現數額過大,專案經理向上申請(所以程式猿並不知道最終是誰處理的,最終那位領導可能也不知道具體是誰申請的——解耦))

這裡寫圖片描述

這裡的程式猿就是Client(Requester請求者),各級領導就是ConcreteHandler(處理者)。Handler 為處理者的抽象類。

#使用場景:

  1. Android原始碼中的實現就是事件分發,父控制元件將事件逐層分發給子控制元件。
  2. Tomcat中的Filter就是使用了責任鏈模式。

#總結:

  • 其實就是入口處理器處理一個請求,然後入口處理器由於某者原因使用其他兄弟處理器來處理這個請求, 這種讓其他處理器來處理這個請求的次數順序(鏈、樹、環)為N,那麼這種模式稱之為責任鏈模式。
  • 這裡處理器呼叫的處理器為其本身擁有的。
  • 這種模式其實是由於某種未知情況,處理器需要藉助其他處理器來處理相應請求。其實就是處理器自己不能處理的問題,主動轉交問題,問題的傳遞處理
  • 就一句:問題的傳遞處理

#參考資料: