一瘫想、責(zé)任鏈模式概念
責(zé)任鏈模式是一種對(duì)象的行為模式粗蔚。在責(zé)任鏈模式里蹋偏,很多對(duì)象由每一個(gè)對(duì)象對(duì)其下家的引用而連接起來(lái)形成一條鏈便斥。請(qǐng)求在這個(gè)鏈上傳遞,直到鏈上的某一個(gè)對(duì)象決定處理此請(qǐng)求威始。發(fā)出這個(gè)請(qǐng)求的客戶端并不知道鏈上的哪一個(gè)對(duì)象最終處理這個(gè)請(qǐng)求枢纠,這使得系統(tǒng)可以在不影響客戶端的情況下動(dòng)態(tài)地重新組織和分配責(zé)任。
責(zé)任鏈模式中的角色
抽象處理者(Handler)角色
該角色對(duì)請(qǐng)求進(jìn)行抽象黎棠,并定義一個(gè)方法來(lái)設(shè)定和返回對(duì)下一個(gè)處理者的引用晋渺。具體處理者(Handler)角色
該角色接到請(qǐng)求后,可以選擇將請(qǐng)求處理掉脓斩,或者將請(qǐng)求傳遞給下一個(gè)處理者木西。 由于具體處理者持有對(duì)下一個(gè)處理者的引用,因此随静,如果需要八千,具體處理者可以訪問(wèn)下一個(gè)處理者,把問(wèn)題給下一個(gè)處理者燎猛,并以此類推
二恋捆、類結(jié)構(gòu)
三、模擬場(chǎng)景進(jìn)行代碼演示
1重绷、場(chǎng)景
工廠種當(dāng)產(chǎn)品完成后需要經(jīng)過(guò)3個(gè)工人的檢查沸停,每個(gè)工人檢查的都是產(chǎn)品不同的規(guī)格參數(shù),但是規(guī)定昭卓,產(chǎn)品合格的條件是至少有兩個(gè)工人合格星立。
- 工人抽象類(相當(dāng)于Handler)
public abstract WorkMan{
protected WorkMan nextWorkMan;
public void dofilter(Product product){
if(product.passNum>=2){
product.isPass=true;
return
}
this.check(product);
if( this.nextWorkMan!=null)
this.nextWorkMan.dofilter(product)
}
void check(Product product);
public WorkMan getNextWorkMan() {
return nextWorkMan;
}
public void setNextWorkMan(WorkMan nextWorkMan) {
this.nextWorkMan = nextWorkMan;
}
}
- 具體檢查產(chǎn)品的工人實(shí)現(xiàn)(相當(dāng)于Concrte Handler)
//檢查工人1
public class WorkMan1 implements WorkMan{
public void check(Product product){
//檢查邏輯
}
}
//檢查工人2
public class WorkMan2 implements WorkMan{
public void check(Product product){
//檢查邏輯
}
}
//檢查工人3
public class WorkMan3 implements WorkMan{
public void check(Product product){
//檢查邏輯
}
}
- 工人檢查鏈
public class WorkManChain{
private WorkMan workManChain;
private Product product;
public WorkManChain(WorkMan workMan,Product product){
this.product = product;
this.workManChain = workMan;
}
public void doFilter(){
this.workManChain.doFilter(this.product);
}
}
四爽茴、責(zé)任鏈模式作用與應(yīng)用場(chǎng)景
- 優(yōu)點(diǎn)
1、降低耦合度绰垂。它將請(qǐng)求的發(fā)送者和接收者解耦室奏。
2、簡(jiǎn)化了對(duì)象劲装。使得對(duì)象不需要知道鏈的結(jié)構(gòu)胧沫。
3、增強(qiáng)給對(duì)象指派職責(zé)的靈活性占业。通過(guò)改變鏈內(nèi)的成員或者調(diào)動(dòng)它們的次序绒怨,允許動(dòng)態(tài)地新增或者刪除責(zé)任。
4谦疾、增加新的請(qǐng)求處理類很方便南蹂。