Service to Worker パターン

このセクションでは、 「パターンテンプレート」 で定義されている形式の Service to Worker デザインパターンについて説明します。

問題

Service to Worker パターンは、Front Controller パターンと View Helper パターンの問題を解決します。Front Controller パターンと View Helper パターンは、ビューへのアクセスを直接扱ったり、ビジネスロジックとプレゼンテーションロジックが混在したりする場合に対応します。

Service to Worker パターンは、次のコンポーネントを組み合わせたマクロパターンです。

解決策

Service to Worker パターンの問題の解決策は、コントローラコンポーネントとビューコンポーネント間にディスパッチャーコンポーネントを追加することです。

コントローラは、コンテンツ取得をディスパッチャーに委ねるか、またはヘルパークラスに直接委ねます。 コントローラは、ほとんどのリクエストのエントリポイントであり、セキュリティ、ロギング、ステート管理などのさまざまなサービスを管理します。これらのサービスの一部は、ヘルパークラスを介してビジネスロジックを呼び出すことが必要になります。

ディスパッチャーはリクエストをビューに送信します。このコンポーネントはコントローラコンポーネントから分離されているため、コードのモジュール化が行いやすくなっています。場合により、ディスパッチャーはヘルパークラス内のビジネスロジックを呼び出すことがあります。

次の図にこの戦略を示します。

コントローラ、ディスパッチャー、およびビューはすべてヘルパークラスにアクセスします。

ディスパッチャーコンポーネントはコントローラ内部にカプセル化できます。

戦略

コントローラは、単独のサーブレットか、またはサーブレットとサーブレットフィルタを組み合わせたものになります。ディスパッチャーは通常、サーブレットとして実装されます。