責任鏈模式是一種物件的行為模式。在責任鏈模式裡,很多物件由每乙個物件對其下家的引用而連線起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。發出這個請求的客戶端並不知道鏈上的哪乙個物件最終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織和分配責任。
在以下條件下可考慮使用chain of responsibility:
有多個的物件可以處理乙個請求,哪個物件處理該請求執行時刻自動確定。
你想在不明確指定接受者的情況下,想過個物件中的乙個提交乙個請求。
可處理乙個請求的物件集合應該被動態指定。
我們來模擬一下場景,乙個公司的報銷流程:
專案經理《部門經理《總經理
其中專案經理報銷額度不能大於500,則部門經理的報銷額度是不大於1000,超過1000則需要總經理審核
有權處理類
public
abstract
class
consumehandler
public
void
setnexthandler(consumehandler nexthandler)
/** user申請人 free報銷費用 */
public
abstract
void
dohandler(string user, double free);
}
專案經理類
public
class
projecthandler
extends
consumehandler else
}else }}
}
部門經理類
public
class
depthandler
extends
consumehandlerelse
}else }}
}
總經理類
public
class
generalhandler
extends
consumehandlerelse
}else }}
}
場景類
public
class
main
}
列印結果
給予報銷:450
.0報銷不通過
給予報銷:600
.0報銷不通過
給予報銷:1500
.0
java設計模式之責任鏈模式
chain ofresponsibility cor 模式也叫職責鏈模式或者職責連鎖模式,是行為模式之一,該模式構造一系列分別擔當不同的職責的類的物件來共同完成乙個任務,這些類的物件之間像鏈條一樣緊密相連,所以被稱作職責鏈模式。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。在這種模式中,通...
java設計模式之責任鏈模式
uml設計 定義 職責鏈模式 稱責任鏈模式 將請求的處理物件像一條長鏈一般組合起來,形成一條物件鏈。請求並不知道具體執行請求的物件是哪乙個,這樣就實現了請求與處理物件之間的解耦 示例 public abstract class leader public leader getnextleader 1...
java設計模式 責任鏈模式
步驟一 建立抽象處理者 handler 角色 這裡是操作與處理分開,介面定義操做方法,抽象類定義處理方法,具體可以寫在一起也行 public inte ce handlerpublic abstract class abstracthandler public void sethandler han...