天天看點

設計模式之責任鍊模式

責任鍊模式

  1. 責任鍊模式結構圖
    設計模式之責任鍊模式
  2. 示例代碼:
    // 抽象處理類
    public abstract class Handler {
    
        protected Handler nextHandler;
    
        public void add(Handler handler){
            this.nextHandler = handler;
        }
    
        public abstract void HandlerRequest(String request);
    }
    
    // 具體處理類A
    public class HandlerA extends Handler{
        @Override
        public void HandlerRequest(String request) {
            if ("handlerA".equals(request)){
                System.out.println("HandlerA處理請求......");
            }
            if (this.nextHandler != null){
                this.nextHandler.HandlerRequest(request);
            }
        }
    }
    
    // 具體處理類B
    public class HandlerB extends Handler{
        @Override
        public void HandlerRequest(String request) {
            if ("handlerB".equals(request)){
                System.out.println("HandlerB處理請求......");
            }
            if (this.nextHandler != null){
                this.nextHandler.HandlerRequest(request);
            }
        }
    }
    
    // 測試類
    public class ChainTest {
    
        public static void main(String[] args) {
            HandlerA handlerA = new HandlerA();
            HandlerB handlerB = new HandlerB();
            handlerA.add(handlerB);
            handlerA.HandlerRequest("handlerB");
        }
    }
    
    
               
  3. 總結:

    責任鍊模式需要一個鍊條,将需要處理的問題分開封裝到不同的類中,每個處理類隻管負責處理自己的部分,易于擴充.

    優點:請求與處了解偶,鍊路結構靈活,易于調整,易于擴充請求,符合開閉原則.

    缺點:責任鍊太長或處理時間太長,會影響整體性能,若存在循環引用,則會造成死循環,導緻系統崩潰.