責任鏈(chain of responsibility)模式的定義:為了避免請求傳送者與多個請求處理者耦合在一起,於是將所有請求的處理者通過前一物件記住其下乙個物件的引用而連成一條鏈;當有請求發生時,可將請求沿著這條鏈傳遞,直到有物件處理它為止。責任鏈模式也叫職責鏈模式。
優點:
① 降低了物件間的耦合。乙個物件無須知道到底是哪個物件處理其請求以及鏈的結構,傳送者和接收者也無須擁有對方的明確資訊。
② 增強了系統的可擴充套件性。可以根據需要增加新的請求處理類,滿足開閉原則。
③ 增強了給物件指派職責的靈活性。當工作流程發生變化,可以動態地改變鏈內的成員的次序,也可動態地新增或者刪除責任。
④ 責任鏈簡化了物件之間的連線。每個物件只需保持乙個指向其後繼者的引用,不需保持其他所有處理者的引用,避免了眾多的 if。
⑤ 責任分擔。每個類只需要處理自己該處理的工作,不該處理的傳遞給下乙個物件完成,明確各類的責任範圍,符合單一職責原則。
缺點:
① 不能保證每個請求一定被處理。由於乙個請求沒有明確的接收者,所以不能保證它一定會被處理,該請求可能得不到處理。
② 對比較長的職責鏈,請求的處理可能涉及多個處理物件,系統效能將受到一定影響。
③ 職責鏈建立的合理性要靠客戶端來保證,增加了客戶端的複雜性,可能會由於職責鏈的錯誤設定而導致系統出錯。
行為型設計模式之責任鏈模式
責任鏈模式是一種鏈式結構,就是由乙個個節點首尾相接串起來的結構,具有很好的靈活性,將每乙個節點看作是乙個物件,每乙個物件擁有不同的處理邏輯,將乙個請求從鏈式的首端發出,沿著鏈的路徑依此傳遞每乙個節點物件,直到有物件處理這個請求為止,我們將這樣一種模式稱為責任鏈模式。使多個物件都有機會處理請求,從而避...
設計模式 行為型 責任鏈模式
從擊鼓傳花談起 擊鼓傳花是一種熱鬧而又緊張的飲酒遊戲。在酒宴上賓客依次坐定位置,由一人擊鼓,擊鼓的地方與傳花的地方是分開的,以示公正。開始擊鼓時,花束就開始依次傳遞,鼓聲一落,假如花束在某人手中,則該人就得飲酒。擊鼓傳花的類圖結構如下 如果用乙個物件系統描述賈府,那麼賈母 賈赦 賈政 賈寶玉和賈環等...
設計模式 行為型 責任鏈模式
責任鏈 chain of responsibility 模式為請求建立了乙個接收者物件的鏈。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。這種型別的設計模式屬於行為型模式。使用場景 乙個請求物件需要多種任務的處理,通過鏈式傳播物件的場景。優點1.職責鏈對於客戶請求是透明的 2.鏈 將請求的...