多個物件都有機會處理請求,從而避免傳送者和接受者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳送這個請求,直到有乙個物件處理他為止。
碼雲位址位址:design_patterns
1.把複雜功能拆分處理,讓每個類只是負責乙個處理邏輯。復用性更好,組合更加靈活。
2.請求和處理類分開,實現低耦合,更加利於擴充套件。
1.責任鏈太長或者每條鏈判斷處理的時間太長會影響效能。特別是遞迴迴圈的時候。
2.不一定被處理,每個職責類的職責很明確,這就需要對寫預設的處理了。
責任鏈模式重要的兩點:分離職責,動態組合
處理者介面
public
inte***ce
handler
責任鏈抽象類, 負責維護鏈狀態和執行鏈方法
public
abstract
class
handlercontext
implements
handler
//遞迴呼叫處理方法
public
void
executor
(integer integer)
if(nexthandler != null)
}}
請求處理者1
public
class
handlerimpl
extends
handlercontext
@override
public boolean isok
(integer integer)
}
請求處理者2
public
class
handlerimpl2
extends
handlercontext
@override
public boolean isok
(integer integer)
}
請求處理者3
public
class
handlerimpl3
extends
handlercontext
@override
public boolean isok
(integer integer)
}
測試類
public
class
test
}
執行結果
執行1
執行2結果2:2
執行3
常用設計模式 責任鏈模式
責任鏈模式 chain of responsibility pattern 是一種常見的行為模式。使多個物件都有處理請求的機會,從而避免了請求的傳送者和接收者之間的耦合關係。將這些物件串成一條鏈,並沿著這條鏈一直傳遞該請求,直到有物件處理它為止。責任鏈模式的重點在 鏈上 由一條鏈去處理相似的請求,在...
常用設計模式 責任鏈模式 二
責任鏈模式在許多框架中都有很廣泛的應用,比如servlet中的filter,netty中的channel等,我們模擬servlet中的filter加深對責任鏈模式的理解,實現請求從a b c b a的執行順序。碼雲位址位址 design patterns 建立filter介面 public inte...
設計模式 責任鏈模式
定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...