2

戦略パターンを実装するとき、使用する戦略を決定するコードをどこに配置しますか? いくつかのサンプル疑似コードが役立ちます。

4

3 に答える 3

4

その決定は、戦略パターンを使用するオブジェクトのクライアントによって行われます。たとえば、キャラクターがその時点で持っている武器に基づいて、異なる攻撃スタイルを使用して他のキャラクターを攻撃するキャラクター オブジェクトがあるとします。使用する戦略の決定は、ゲームのプレイヤーがキャラクターが使用する武器を選択するときに行われます。

そのため、使用する戦略を決定するのは、キャラクターも武器 (この例の戦略パターンの 2 つの主要コンポーネント) ではなく、キャラクターと武器を使用するコードが決定します。新しい Weapon オブジェクト (RayGunWeapon など) を作成し、それをキャラクターに「与える」だけで、キャラクターの動作が変わります。

ストラテジーを明示的に選択するコードを作成することもできますが、このパターンの真の価値は実行時に実行できることだと思います。

于 2009-05-13T04:10:15.013 に答える
1

どのように実装するかによって、コードの場所、およびコードがコンパイルされるか実行時に行われるかが決まります。

たとえば、依存関係の挿入 (DI) を使用する場合、xml ファイルを変更することで、実行時に別の戦略を挿入できることがよくあります。

AOP を使用する場合は、アスペクトの記述方法に応じて、実行時またはコンパイル時になります。

Spring Framework を使用する場合、それは DI を使用するのと同様であり、別のクラスで配線するのと同じくらい簡単です。

サービス ロケータを使用する場合、別の DLL にスワップするのと同じくらい簡単です。

基本的に、戦略パターンを実装するには多くの方法があります。いくつかをリストしただけなので、依存しているというコメントは非常に正しいです。

于 2009-05-14T01:52:07.447 に答える
0

どの戦略を取るかは、いつ決定するかによって異なります。作成時に戦略を解決できる場合もあれば、実行時に解決できる場合もあります。それが依存する簡単な答え。

于 2009-05-13T04:00:29.007 に答える