-
抽象類 handler
- level 屬性: 當前handler能夠處理的責任級別
- 構造方法(level)
- nextHandler:責任鏈的下一個節點,還有setter
- final方法 HandlerMessage(Request):這是handler的公共邏輯,負責判斷當前請求的level能否處理,如果不能處理傳遞給下一個handler。唯一對外公開的方法。
- abstract方法 response(Request) :處理請求
-
handlerImplement
- 實現response方法,定義該角色的職能。
- 構造方法定義該角色能夠處理的任務level
-
請求接口 RequestInterface
- getLevel:返回任務的level
- getRequest:返回任務的請求信息
requests = new List(new request1(), new request2(), new request3());
handler1 = new HandlerImplement1();
handler2 = new HandlerImplement2();
handler3 = new HandlerImplement3();
handler1.setNext(handler2);
handler2.setNext(handler3);
for (request : requests) {
handler1.HandleMessage(request); // 統一由責任鏈的第一個節點開始驅動
}
總結
優點
- 請求方不用知道整個處理鏈的全貌,只管調用第一個節點。擴展責任鏈節點也不會影響請求方。
缺點
- 請求鏈過長可能會造成性能問題。一般在Handler里設置最大節點數量屬性,setNextHandler的時候判斷是否超過該值,避免出現超長鏈。