責任鏈模式

  • 抽象類 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); // 統一由責任鏈的第一個節點開始驅動
}

總結

優點

  1. 請求方不用知道整個處理鏈的全貌,只管調用第一個節點。擴展責任鏈節點也不會影響請求方。

缺點

  1. 請求鏈過長可能會造成性能問題。一般在Handler里設置最大節點數量屬性,setNextHandler的時候判斷是否超過該值,避免出現超長鏈。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容