**示例
某個請求需要多個物件進行處理,從而避免請求的傳送者和接收之間的耦合關係。將這些物件連成一條鍊子,並沿著這條鍊子傳遞該請求,直到有物件處理它為止。
報銷審批流程是乙個很好的例子,超過多少金額需要哪個級別的審批,比如加班交通費報銷,不超過3k需要leader和經理審批,超過3k需要總監再次審批才能報銷……
定義處理請求的方法
package com.designpattern.responsibility;
public
inte***ce handler
定義抽象處理者角色
package com.designpattern.responsibility;
public
abstract
class abstracthandler
public
void
sethandler(handler handler)
}
定義具體處理者角色。繼承抽象類並實現具體的處理請求的方法
package com.designpattern.responsibility;
//核心類,例項化後生成一系列相互持有的物件,構成一條鏈
public
class
concretehandler
extends
abstracthandler
implements
handler
//覆寫具體處理請求的方法
@override
public
void
handlerequest()
} }
package com.designpattern.responsibility;
public
class testmain else
leader.handlerequest("加班交通費報銷:");
} }
執行結果:
加班費:3139.0867555809655
加班交通費報銷: 直接領導 審批!
加班交通費報銷: 經理 審批!
加班交通費報銷: 總監 審批!
加班交通費報銷: 財務 審批!
加班費:1624.8882151886996
加班交通費報銷: 直接領導 審批!
加班交通費報銷: 經理 審批!
加班交通費報銷: 財務 審批!
邏輯非常簡單:只要有下家,就傳給下家處理;如果沒有下家,就自行處理。
設計模式 責任鏈模式
定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...
設計模式 責任鏈模式
責任鏈可以使得系統在不影響客戶端的前提下動態的安排責任鏈和分配責任。責任鏈模式中包含的角色有抽象處理者,具體處理者以及請求的傳送者。責任鏈可以是一條直線,乙個環鏈甚至乙個樹結構。它使得每乙個具體的訊息處理者都有可能處理訊息。抽象的請求處理者 author wly public abstract cl...
設計模式 責任鏈模式
責任鏈模式 chain ofresponsibility pattern 基本概念 責任鏈,顧名思義,是指乙個負責相應請求的行為鏈。首先要理解的是乙個鏈,然後通過這個鏈來管理個行為。什麼時候會用到責任鏈 對於乙個請求,沒有特別指明由誰處理或沒有指明如何處理。此時可以使用責任鏈的形式,用過將各種處理行...