Section11: Java EEパターン

MVCパターン
クラス構成
ControllerがViewとModelを参照。ViewはModelを参照。
役割説明
Modelデータとビジネスロジック。
ViewModelからのデータを表示する。JSPがViewに相当する。
Controllerクライアントからの要求を受け付けModelとViewの制御を行う。サーブレットがControllerに相当する。
特徴・メリット
  • 各コンポーネントの独立性を高めることで、変更時の影響を局所化する。
  • 役割が明確になるので分担作業がしやすい。また、可読性も高まる。
  • 正確にはJavaEEパターンではなく、より一般的なアーキテクチャパターンの一種。
Intercepting Filterパターン
クラス構成
ClientがFilterManagerを呼び出す。FilterManagerはFilterChainとTargetを呼び出す。FilterChainは複数のFilterを保持する。
役割説明
FilterManagerFilterの管理を行う。
FilterChain複数のFilterの連鎖を保持する。
Filterフィルタリング処理を実装したフィルタ。
TargetFilterを適用するターゲット。
特徴・メリット
  • 横断的な処理の実装をフィルタとして分離することで、フィルタの順番や処理内容などを柔軟に変更可能。
  • ServletのFilter機構そのもの
Front Controllerパターン
クラス構成
Clientはリクエストを一元管理するController(例えばServletFrontクラス、JSPFrontクラス)を呼び出す。
役割説明
Controller全てのリクエストを一元的に受け付ける。
特徴・メリット
  • 全てのリクエストに対する共通的な処理を一箇所に集中できるため、保守性が上がる。
  • StrutsのActionServletがこれに相当する。
Business Delegateパターン
クラス構成
ClientはBusinessDelegateを呼び出す。BusinessDelegateはLookupServiceからBusinessServiceをlookupまたは生成し、BusinessServiceを呼び出す。
役割説明
BusinessDelegateClientからのビジネスロジック呼び出しを受け付け、BusinessServiceへ委譲する。
LookupServiceBusinessServiceのインスタンスをルックアップまたは生成する。ServiceLocatorパターンのServiceLocatorがここに使用されるのが一般的。
BusinessServiceビジネスロジックの実装。
特徴・メリット
  • BusinessServiceのルックアップ/生成手順やロジックの呼び出し方法をClientから隠蔽する。そのため、BusinessServiceの生成方法や呼び出し方に変更があってもBusinessDelegateで吸収することができるので、Clientを変更せずにすむ。
Service Locatorパターン
クラス構成
シングルトンであるServiceLocatorはInitialContextを使ってServiceFactoryをlookupし、ServiceFactoryはBusinessServiceをlookupまたは生成してServiceLocatorへ返す。ClientはServiceLocatorを通じてBusinessServiceを呼び出す。
役割説明
ServiceLocatorBusinessServiceのルックアップ/生成処理をClientから隠蔽し、BusinessServiceの容易な取得方法をClientへ提供する。一般的にシングルトンとして実装する。
InitialContextBusinessServiceのルックアップ/生成処理を行う入り口。
ServiceFactory実際にBusinessServiceのルックアップ/生成処理を行うクラス。
BusinessServiceビジネスロジックの実装。
特徴・メリット
  • ビジネスサービスのルックアップ/生成処理の複雑さをClientから隠蔽する。
  • ビジネスサービスをキャッシュすることでパフォーマンスを改善できる。
Transfer Objectパターン
クラス構成
ClientはBusinessObject(例えばEntityEJB、SessionEJB、DataAccessObject)とValueObject(=Transfer Object)を使用する。ValueObjectはBusinessObjectが生成することある。
役割説明
ValueObjectBusinessObject同士やClientとの間で受け渡した値をまとめて保持するオブジェクト。
BusinessObjectビジネスロジックを実装したクラスやデータアクセスオブジェクト(DAO)など。
特徴・メリット
  • 複数のコンポーネント間でやりとりする値を1つにまとめ、1度に転送するため、EJBなどのリモート呼び出しを行っている場合、ネットワークトラフィックを軽減できる。
inserted by FC2 system