Strategyパターンでは、クラスの動作やそのアルゴリズムは、実行時に変更することができます。
デザインパターンのこのタイプは、行動パターンに該当します。
ストラテジーパターンは、我々は、様々な戦略とその行動戦略オブジェクトごとに変化するコンテキストオブジェクトを表すオブジェクトを作成します。
戦略オブジェクトは、コンテキストオブジェクトの実行アルゴリズムを変更します。
図の下に、基本的なロジックと戦略パターンの流れを示しており、私はこのパターンに基づいてコードの例を提供します。
ステップ1は、戦略インタフェースを作成します。
パブリックインターフェース戦略{ 公共のint doOperation(INT NUM1、INT NUM2)。 }
ステップ2。戦略インタフェースを実装する具象クラスを作成します。
OperationAdd:
パブリック クラス OperationAddは実装戦略{ @Override 公共 INT doOperation(INT NUM1、INT NUM2){ 戻り NUM1 + NUM2と、 } }
OperationSubstract:
パブリック クラス OperationSubstractは実装戦略{ @Override 公共 INT doOperation(INT NUM1、INT NUM2){ 戻り NUM1 - NUM2します。 } }
OperationMultiply:
パブリック クラス OperationMultiplyは実装戦略{ @Override 公共 int型 doOperation(int型 NUM1、int型からnum2){ リターン NUM1の*のNUM2を。 } }
ステップ3。ファイル名を指定して実行時に使用するためにどのような戦略を決定することができるコンテキストクラスを作成します。
パブリック クラスコンテキスト{ プライベート戦略戦略。 公共コンテキスト(戦略戦略){ この .strategy = 戦略。 } 公共 INT executeStrategy(INT NUM1、INT NUM2){ 戻りstrategy.doOperation(NUM1、NUM2)を、 } }
ステップ4。
Demoのメインクラスを作成します。
パブリック クラスStrategyPatternDemo { 公共 静的 ボイドメイン(文字列[]引数){ コンテキストコンテキスト = 新しいコンテキスト(新しいOperationAdd())。 System.out.println( "10 + 5 =" + context.executeStrategy(10、5 ))。 コンテキスト = 新しいコンテキスト(新しいOperationSubstract())。 System.out.println( "10から5 =" + context.executeStrategy(10、5 ))。 コンテキスト = 新しいコンテキスト(新しいOperationMultiply())。 System.out.printlnは("10 * 5 =" + context.executeStrategy(10、5 ))。 } }