デザインパターン

Strategy

適応可能性

クラスが多くの振る舞いを定義しており、これらがオペレーション内で複数の条件文として現れている場合。このとき、多くの条件文を利用する代わりに、条件分岐後の処理を Strategy クラスに移し換える。

構造

strategy.gif

構成要所

Strategy クラス
サポートするすべてのアルゴリズムに共通のインタフェースを宣言する。Context クラスは、ConcreteStrategy クラスにより定義されるアルゴリズムを呼び出すためにこのインタフェースを利用する。
ConcreteStrategy クラス
Strategy クラスのインタフェースを利用して、アルゴリズムを実装する。
Context クラス
  • ConcreteStrategy オブジェクトを備えている。
  • Strategy のオブジェクトに対する参照を保持する。
  • Strategy クラスが Context クラスのデータにアクセスするためのインタフェースを定義してもよい。

目的

アルゴリズムの集合を定義し、各アルゴリズムをカプセル化して、それらを交換可能にする。Strategy パターンを利用することで、アルゴリズムを、それを利用するクライアントからは独立に変更することができるようになる。

コメント



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc