請求的發送者與接收者
動機
在軟件構建過程中,一個請求可能被多個對象處理,但是每個請求在運行時只能有一個接受者,如果顯式指定,將必不可少地帶來請求發送者與接受者的緊耦合。
如何使請求的發送者不需要指定具體的接受者?讓請求的接受者自己在運行時決定來處理請求,從而使兩者解耦。
意圖
使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。將這些對象連成一條鏈,並沿着這條鏈傳遞請求,直到有一個對象處理它為止。
Chain Of Responsibility模式的要點
Chain Of Responsibility模式的應用場合在於一個請求可能有多個接受者,但是最後真正的接受者只能有一個,只有這時候請求發送者與接受者的耦合才有可能出現變化脆弱的症狀,職責鏈的目的就是將二者解耦,從而更好地應對變化。
應用了Chain Of Responsibility模式後,對象的職責分派將更具靈活性。我們可以在運行時動態添加/修改請求的處理職責。
如果請求傳遞到職責鏈末尾仍得不到處理,應該有一個合理的缺省機制。這也是每一個接受對象的責任,而不是發出請求的對象的責任。