オブジェクト指向設計


コアJ2EEパターン - Dispatcher Viewパターン

2008/07/27 21:34Update
TAGS: J2EE | パターン | Dispatcher View

Dispatcher View(ディスパッチャ・ビュー)パターンは コアJ2EEパターン の一つ、Front Controller(フロント・コントローラー)とView(ビュー)の間にDispatcher(ディスパッチャ)と呼ばれるコンポーネントを追加し、ビューの管理、ビューの選択などの処理が委譲され、プレゼンテーション層とビジネスロジックを分離します。

本文は「問題」、「解決策」、「戦略」、「メリット」などからDispatcher Viewパターンについて説明します。


問題


Front ControllerパターンとView Helperパターンを用いたWEBアプリケーションでは、Front Controllerはリクエストを集中管理する役割を果たし、ビューのナビゲーション、認証、セッション管理などの共通処理を行います。
View Helperはビジネスデータ・アダプタという役割で、データ収集・データ形式の変換などを行います。

しかし、アクセス制御や、ビューの管理、コンテンツの取得などを一元管理できるコンポーネントが存在しません。その結果、それらの処理コードをビューに散在してしまいます。


解決策


Combine a controller and dispatcher with views and helpers to handle client requests and prepare a dynamic presentation as the response. Controllers do not delegate content retrieval to helpers, because these activities are deferred to the time of view processing. A dispatcher is responsible for view management and navigation and can be encapsulated either within a controller, a view, or a separate component.

コントローラ、ディスパッチャとビューや、ヘルパーを組み合わせてクライアントからのリクエストを処理し、ダイナミックなプレゼンテーションをレスポンスします。
◇ コンテンツの取得はビューを処理するまで遅延されますので、コントローラは、コンテンツの取得をヘルパーに委譲しません。
◇ ディスパッチャはビューの管理やナビゲーションなどの責務を持ちます。
◇ ディスパッチャはコントローラや、ビューの内部で実装するか、独立なコンポーネントとして実装することができます。

<<図1:構造>>


<<図2:責務>>


Controller:コントローラ
リクエストを集中して管理します。ビューのナビゲーション、認証、セッション管理などの共通処理を行います。

Dispatcher:ディスパッチャ
ビューの管理やナビゲーションを行います。

View:ビュー
プレゼンテーション・ロジック

Helper:ヘルパー
データ収集・データ形式の変換などを行います。一つのビューに複数のヘルパーを配置することができます。


メリット


◇ プレゼンテーション・ロジックとビジネス・ロジックの分離
◇ 共通する処理を集約し、再利用が可能

戦略


Dispatcher ViewerパターンはFront ControllerとView Helperの組み合わせで、各部分の実装方法によって、次のような戦略があります。

◇ Servlet Front Strategy
  フロント・コントローラはサーブレット として実装される戦略
◇ JavaServer Pages Front Strategy
  フロント・コントローラはJSP として実装される戦略
◇ JSP View Strategy
  ビューにJSPの実装戦略
◇ Servlet View Strategy
  ビューにサーブレットの実装戦略
◇ JavaBean Helper Strategy
  ヘルパーにJavaBeanの実装戦略
◇ Custom Tag Helper Strategy
  ヘルパーはカスタム・タグとして実装される戦略
◇ Dispatcher in Controller Strategy
  コントローラの内部でディスパッチャが実装される戦略
◇ Dispatcher in View Strategy
  ビューの内部でディスパッチャが実装される戦略
◇ Transformer Helper Strategy
  ヘルパーはeXtensible Stylesheet Language Transformer(XSLT)として実装される戦略


関連パターン


Front Controller  と View Helper
Dispatcher ViewerパターンはFront ControllerとView Helperの組み合わせです。

Service to Worker
Service to WorkerはDispatcher Viewerと同じく、Front ControllerとView Helperの組み合わせです。Service to Workerは制御中心としたパターンで、Dispatcher Viewerはビュー中心です。

その他参考資料


Core J2EE Pattern Catalog
Core J2EE Patterns - Dispatcher View

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments