1. 程式人生 > 實用技巧 >【設計模式】- 責任鏈篇

【設計模式】- 責任鏈篇

簡介

  • 責任鏈模式(Chain of Responsibility):使多個物件都有機會處理請求,從而避免請求組的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個物件處理它為止。

  • 程式碼:

//定義一個base處理者
public abstract class Handler {
    protected Handler handler;

    public void setHandler(Handler handler) {
        this.handler = handler;
    }

    public abstract void handleRequest();
}

//定義處理者1
public class FirstHandler extends Handler {
    @Override
    public void handleRequest() {
        if (true) {
            doSomething();
        } else if (Objects.nonNull(handler)) {
            handler.handleRequest();
        }
    }
}

//定義處理者2
public class SecondHandler extends Handler {
    @Override
    public void handleRequest() {
        if (true) {
            doSomething();
        } else if (Objects.nonNull(handler)) {
            handler.handleRequest();
        }
    }
}

//定義處理者3
public class ThirdHandler extends Handler {
    @Override
    public void handleRequest() {
        if (true) {
            doSomething();
        } else if (Objects.nonNull(handler)) {
            handler.handleRequest();
        }
    }
}

//入口處理方法
public void method(){
    //定義責任鏈條
    Handler firstHandler = new FirstHandler();
    Handler secondHandler = new SecondHandler();
    Handler thirdHandler = new ThirdHandler();
    firstHandler.setHandler(secondHandler);
    secondHandler.setHandler(thirdHandler);
    
    //傳遞任務
    firstHandler.handleRequest();
}
  • 通過上述程式碼,可以看出,定義了責任鏈條之後,那麼就會給滿足條件的handler處理請求。