投稿

7月, 2006の投稿を表示しています

Service Locator[J2EEパターン]

イメージ
インターネットで調べてみると、色々な解説がありましたし、 クラス図も異なる物ばっかりでした。 私は「J2EEパターン 第2版」とSunの 「Core J2EE Patterns - Service Locator」 を読んでいた時にもそのように感じました。 二つとも同じパターンを紹介されているだが、クラス図には違う物が書かれていると見えていたので、結構悩んでいました。 分かりやすかった例 それは「J2EEパターン 第2版」であげられたJDBCの例でした。 Webアプリにおき、JDBCに接続する際に、データベース接続初期化処理はシステム全体では、一回行え、そのインスタンスを唯一し、共有するのが理想の設計だろう。クライアント(ロジック)側からこの唯一のインスタンスを利用し、セッション毎にコネクションを作成するのを望ましい。 このような事を実現するために、データベース接続初期化処理の部分をSingletonパターンを利用すれば出来るはずだが、システム内には、このような初期化を行うインスタンスが1つに限らずに、集中的に管理できればソースコードを書く分量も少なくなるはずでしょうと。ここまで考えてきたら、 Service Locatorの良さを少し見えてきたでしょう。 Service Locatorのコア いきなり異なるクラス図からデザインパターンを理解するのが難しかったが、1つのデザインパターンは色々変化していても、コアの部分は変わりません。 賢い2人の技術者の異なるクラス図を理解し、共通点が見つかれば、Service Locatorのコア部分も分かるでしょう。 以下は二つクラス図の共通点: 1. client        → サービスの利用側 2. ServiceLocator    → 唯一のインスタンスを格納する場所 3. IntialContext     → サービスの初期化を行うクラス 4. BusinessService/Target→ サービスを提供する本体 僕の理解 Service Locatorパターンとは、唯一のインスタンスを管理する方法の1つであると思います。 唯一のServiceLocator?という容器の中で、データベースを初期化を行うような唯一のインスタンスを格納します。そして、格納するために、そのインスタンスを作成し、初期化を行う必要なInt...