Javaのチェーン・オブ・レスポンシビリティ・パターンで、実行順序を指定する方法は何ですか?

JavaのChain of Responsibilityパターンでは、実行順序を指定する方法が次のようになります。

  1. 責任連鎖の抽象基底クラスやインタフェースを定義し、処理メソッドと次の処理者を設定するメソッドを含める。
  2. 具体的な処理者クラスに処理方法を実装し、次の処理者を設定する方法で責任連鎖を繋げます。
  3. 指定された順序に従って、クライアント側のコードで具体的な処理者オブジェクトを作成し、次の処理者を設定します。
  4. 責任連鎖の処理方法を呼び出し、リクエストを最初の処理者に渡す。
  5. 処理者は、リクエストを処理した後、次の処理者にリクエストを渡すか、直接処理を終了するかを選択できます。

こちらは簡単なサンプルコードです:

// 定义责任链的抽象基类
public abstract class Handler {
    protected Handler nextHandler;

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

    public abstract void handleRequest(String request);
}

// 具体的处理者类
public class ConcreteHandler1 extends Handler {
    public void handleRequest(String request) {
        if (request.equals("A")) {
            System.out.println("ConcreteHandler1处理了请求:" + request);
        } else if (nextHandler != null) {
            nextHandler.handleRequest(request);
        }
    }
}

public class ConcreteHandler2 extends Handler {
    public void handleRequest(String request) {
        if (request.equals("B")) {
            System.out.println("ConcreteHandler2处理了请求:" + request);
        } else if (nextHandler != null) {
            nextHandler.handleRequest(request);
        }
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        // 创建具体的处理者对象
        Handler handler1 = new ConcreteHandler1();
        Handler handler2 = new ConcreteHandler2();

        // 按照指定的顺序设置下一个处理者
        handler1.setNextHandler(handler2);

        // 调用责任链的处理方法
        handler1.handleRequest("A");
        handler1.handleRequest("B");
    }
}

上記の例では、まず2つの具体的な処理者オブジェクトを作成し、次に次の処理者を設定する方法を使用してそれらを接続します。最後に、責任連鎖の処理メソッドを呼び出して、リクエストを最初の処理者に渡します。処理中に、ある処理者がリクエストを処理できる場合、リクエストを処理して終了します。そうでない場合、リクエストは次の処理者に渡されます。これにより、指定された順序で責任連鎖内の処理者を実行できます。

bannerAds