インタープリタパターンの特徴：構造から依存性を分離する
  インタープリタパターンを使用することにより構造化されたプログラムから各構造間の依存性を分離することが可能である。
  構造化のみを行った段階では全体が依存関係により強く結合しているため、ある処理クラスの修正が他の処理クラスに伝播する可能性がある。 また構造に関する定義が複数の処理クラス(ソースファイル)に分散したままであるため、構造を変更するために多くの処理クラスを修正する必要がある。

  図:インタープリタパターン適用前のクラス図

  インタープリタパターンを適用するために以下の観点で修正する。
  1. 処理に共通なインタフェースを抽出する。
  2. 各処理をインタフェースに適合するように修正する。
  3. 各処理でその他の処理クラスに依存する箇所を、インタフェースへの委譲になるように修正する。この段階でいったん構造化が失われ、各処理クラスの依存関係が平坦になる。
  4. 各処理クラスのインスタンスを作成する。
  5. 各インスタンスを集約関係(has-a関係)により結合し、再び構造化する。

  図:インタープリタパターン適用後のクラス図

  図:インタープリタパターン適用後のオブジェクト図

  各クラスはその他の実装クラスに依存しないため、あるクラスの修正が他のクラスに伝播する可能性を抑止することができる。 また構造に関する定義がひとつのクラス(例のクラス図におけるMyServlet)で定義しているため、 構造を変更するために少数のクラスを修正するだけで済む。
  この観点に関するインタープリタパターンの欠点を以下に挙げる。
  1. 処理に共通なインタフェースを抽出する必要がある。
  2. インタフェースに適合するように各処理を設計する必要がある。

トップに戻る
Copyright (C) 2006 Takahiro Nakamura. All rights reserved.