Java のチェーンオブレスポンシビリティーパターンの実装方法は何ですか?

Javaにおける責任連鎖パターンの実装方法は以下の通りです:

  1. Handlerという抽象処理クラスを定義し、リクエストを処理するための抽象メソッドを含み、次の処理クラスへの参照を定義します。このクラスはインターフェースまたは抽象クラスとして実装することができます。
  2. 具体処理者(ConcreteHandler)クラスを定義し、抽象処理者クラスを継承または実装し、その処理方法を実装します。処理方法の中で、リクエストを処理できるかどうかを判断し、可能であれば処理し、そうでなければ次の処理者にリクエストを渡します。
  3. クライアント側のコードで、処理チェーンを作成し、リクエストを順番に処理するためにチェーン内の処理器に渡します。

以下は例です:

// 抽象处理器类
abstract class Handler {
    protected Handler nextHandler;

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

    public abstract void handleRequest(String request);
}

// 具体处理器类1
class ConcreteHandler1 extends Handler {
    @Override
    public void handleRequest(String request) {
        if (request.equals("request1")) {
            System.out.println("ConcreteHandler1 handles request1");
        } else if (nextHandler != null) {
            nextHandler.handleRequest(request);
        }
    }
}

// 具体处理器类2
class ConcreteHandler2 extends Handler {
    @Override
    public void handleRequest(String request) {
        if (request.equals("request2")) {
            System.out.println("ConcreteHandler2 handles request2");
        } 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("request1");
        handler1.handleRequest("request2");
        handler1.handleRequest("request3");
    }
}

結果は出力されました。

ConcreteHandler1 handles request1
ConcreteHandler2 handles request2

上記の例では、抽象処理クラスはhandleRequestという抽象メソッドを定義し、具体的な処理クラスはそのメソッドを継承して実装しています。クライアントコードでは、ハンドラーチェーンが作成され、リクエストが順番にハンドラーに渡されます。ハンドラーの1つがリクエストを処理できれば処理し、処理できない場合は次のハンドラーにリクエストを渡します。

bannerAds