Java 設計パターンにおける責任連鎖パターンの詳細な調査

WBOY
リリース: 2024-05-09 14:45:02
オリジナル
853 人が閲覧しました

責任連鎖パターンは、リクエストが処理されるか、すべてのオブジェクトがリクエストの処理を試行するまで、一連のオブジェクトにリクエストを順番に渡すことを可能にする設計パターンです。これには、ハンドラー、抽象ハンドラー、およびクライアントのコンポーネントが含まれています。利点には、疎結合、拡張性、再利用性が含まれます。フィルター チェーンは一般的な実際の例です。

Java 設計パターンにおける責任連鎖パターンの詳細な調査

Java デザイン パターンにおける責任の連鎖パターンの詳細な調査

はじめに

責任の連鎖パターンは、リクエストを処理するオブジェクトのセットを作成できるデザイン パターンです。順番通りに。オブジェクトがリクエストを処理できない場合、そのリクエストはチェーン内の次のオブジェクトに渡されます。

構造

責任連鎖パターンには次のコンポーネントが含まれます:

  • Handler: リクエストを処理するオブジェクト。
  • 抽象ハンドラー: ハンドラーのインターフェイスを定義します。
  • Client: リクエストを開始するオブジェクト。

仕組み

責任連鎖パターンは次のように機能します:

  1. クライアントは、連鎖内の最初のプロセッサにリクエストを送信します。
  2. プロセッサはリクエストを処理するかどうかを決定します。その場合は、リクエストを処理して結果を返します。そうでない場合は、チェーン内の次のプロセッサにリクエストを渡します。
  3. このプロセスは、1 つのプロセッサがリクエストを処理するか、チェーン内のすべてのプロセッサがリクエストの処理を試みるまで繰り返されます。

利点

責任連鎖パターンの使用にはいくつかの利点があります:

  • 疎結合: プロセッサーは互いに独立しており、プロセッサーの追加または削除が簡単です。
  • 拡張性: 必要に応じて追加の処理ステップを簡単に追加できます。
  • 再利用性: プロセッサは、さまざまな種類のリクエストを処理するために再利用できます。

実践的なケース

フィルターチェーン

フィルターチェーンは、責任の連鎖パターンを使用する一般的な例です。これは、リクエストを順番に処理する一連のフィルターで構成されます。フィルターがリクエストを満たさない場合、チェーン内の次のフィルターにリクエストを渡します。

簡単なフィルター チェーンの例は次のとおりです:

public class FilterChain {

    private List<Filter> filters;

    public FilterChain(List<Filter> filters) {
        this.filters = filters;
    }

    public void doFilter(Request request, Response response) {
        for (Filter filter : filters) {
            filter.doFilter(request, response);
        }
    }
}

public interface Filter {
    
    void doFilter(Request request, Response response);
}

public class AuthenticationFilter implements Filter {

    @Override
    public void doFilter(Request request, Response response) {
        // 验证请求
    }
}

public class AuthorizationFilter implements Filter {

    @Override
    public void doFilter(Request request, Response response) {
        // 授权请求
    }
}

public class LoggingFilter implements Filter {

    @Override
    public void doFilter(Request request, Response response) {
        // 记录请求和响应
    }
}

public class Main {

    public static void main(String[] args) {
        FilterChain filterChain = new FilterChain(
            List.of(new AuthenticationFilter(),
                new AuthorizationFilter(),
                new LoggingFilter())
        );

        filterChain.doFilter(request, response);
    }
}
ログイン後にコピー

以上がJava 設計パターンにおける責任連鎖パターンの詳細な調査の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート