2009-05-13 1 views
2

ストラテジパターンを実装する場合、どのストラテジを使用するか決定するコードはどこに置かれますか?いくつかのサンプル疑似コードが役に立ちます。ストラテジパターンの実装

答えて

4

この決定は、戦略パターンを使用するオブジェクトのクライアントによって行われます。例えば、キャラクターオブジェクトを持っているとしましょう。キャラクターオブジェクトは、キャラクターオブジェクトがあり、そのキャラクターオブジェクトには、キャラクターオブジェクトがあります。キャラクターが使用する武器を選択すると、使用する戦略の決定はゲームのプレイヤーによって行われます。

文字と武器(この例では戦略パターンの2つの主要コンポーネント)は、文字と武器を使用するコードではなく、使用する戦略を決定しません。新しいWeaponオブジェクト(RayGunWeaponなど)を作成し、それをCharacterに与えることによってCharacterの動作が変更されます。

戦略を明示的に選択するコードを書くことはできますが、このパターンの本当の価値は、実行時に行うことができるということです。

0

どの戦略をとるかは、どちらが解決するかによって決まります。時には、作成時に戦略を解決することができます。それは簡単な答えです。

1

どのように暗示するかは、コードの場所、実行時にコンパイルされるか実行されるかを決定します。

たとえば、依存性注入(DI)を使用すると、xmlファイルを変更することによって、実行時に異なる戦略を注入することができます。

AOPを使用すると、アスペクトの書き方によって、実行時またはコンパイル時になります。

Spring Frameworkを使用している場合は、DIを使用する場合と似ており、別のクラスの配線ほど簡単です。

サービスロケータを使用する場合は、別のDLLを簡単に交換することができます。

基本的に戦略パターンを実装する方法はたくさんありますが、ここではいくつか挙げておきますので、それが依存するコメントは非常に正しいものです。