名詞解釋:
職責鏈模式:使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,直到有乙個物件處理它為止。
必要元素:
1.定義乙個處理請示的介面;
2.具體處理類,處理它所負責的請求,可訪問它的後繼者,如果可以處理該請求,就處理,否則就將該請求**給它的後繼者。
上例子:
handler:
classhandler
public
abstract
void handlerequest(int
request);
}
具體處理者類1:
classconcretehandler1:handler
處理請求
",this
.gettype().name,request);
}else
if (successor!=null
)
}}
具體處理者類2:
classconcretehandler2:handler
處理請求
", this
.gettype().name, request);
}else
if (successor != null
)
}}
具體處理者類3:
classconcretehandler3:handler
處理請求
", this
.gettype().name, request);
}else
if (successor != null
)
}}
呼叫:
handler h1 = newconcretehandler1();
handler h2 = new
concretehandler2();
handler h3 = new
concretehandler3();
h1.setsuccessor(h2);
h2.setsuccessor(h3);
int requests = ;
foreach (var item in
requests)
console.read();
總結:
職責鏈的好處是,當客戶提交乙個請求時,請求時沿鏈傳遞直至有乙個handler物件負責處理它。這就使得接收者和傳送者都沒有對方的明確資訊,且鏈中的物件自己也並不直到鏈的結構。如果是職責鏈可簡化物件的相互連線,它們僅需保持乙個指向其後繼者的引用,而不需保持給它所有的候選接收著引用。
設計模式之職責鏈模式
如果我們現在有乙個需求,乙個人他生了病,這個病要在 醫院才能看,但是這個病人並不清楚,就先去了一級醫院,一級醫院的醫生告訴他你的病要去二級醫院看,二級醫院也告訴他 你的病我這裡看不了,你要去 醫院才能看,最後他去 醫院把病看好了.這個過程直接寫成 class patient this.patient...
設計模式之職責鏈模式
職責鏈模式 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。適用場景 1 有多個的物件可以處理乙個請求,哪個物件處理該請求執行時刻自動確定 2 在不明確指定接收者的情況下,向多個物件中的乙個提交乙個請求 ...
設計模式之職責鏈模式
職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將多個物件連成一條鏈,沿著這條鏈傳遞請求直到有物件處理它為止。可以定義乙個抽象類來表示處理事件的物件,這個類首先有個處理事件的抽象方法,然後提供乙個方法設定下一級處理者...