責任鏈模式是一種對象的行為模式【GOF95】。在責任鏈模式里,很多對象由每一個對象對其下家的用而鏈起來形成一條鏈,請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求。 發出請求的客戶端并不知道鏈上的哪一個對象終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織鏈和分配責任。
結構圖:
抽象處理者(Handler)角色:定義出一個處理請求的接口。如果需要,接口可以定義出一個方法,以設定和返回對下家的引用。這個角色通常由一個抽象類或接口實現。
具體處理者(ConcreteHandler)角色:具體處理者接到請求后,可以選擇將請求處理掉,或者將請求傳給下家。由于具體處理者持有對下家的引用,因此如果需要,具體處理者可以訪問下家。
責任鏈并不創建責任鏈,責任鏈的創建必須由系統的其它部分創建出來。責任鏈模式降低了請求的發送端和接收端之間的耦合,使多個對象都有機會處理這個請求。一個鏈可以是一條線、一個換、或則一個樹。
總結:這個責任鏈 好像 就是把所有的處理方法都連接起來了,如果自己不處理可以丟給下一個環節進行處理。從結構上來看,就是有一個抽象類 里面聚合了自己,那么子類在實現的同時還可以指定一個關聯的 相同對象,以便進行傳遞。 那么在調用的時候 就可以通過這條鏈式結構 最終找到適合處理自己的方法。這就好比 一個 多級的 if{}else if{}else if{}...一樣
?