戦略モード
1)基本的な定義
クラス行為またはアルゴリズムは、実行時に変更することができ、それが行動のパターンです。
意図:、一連のアルゴリズムを定義し、それらをカプセル化し、それらを交換します。
問題を解決するには、次のアルゴリズム同様の例様々な環境下で、...他に維持するために複雑で困難もたらした場合には
使用シナリオを:システムは、複数のクラスがあり、ちょうど彼らの直接の行動を差別
解決する方法:シーンそれぞれの戦略オブジェクトとオブジェクトコンテキストオブジェクトポリシーオブジェクト変更点演算コンテキストオブジェクトとして行動変化戦略を変更表します。
キーコード:同じインターフェイスを実装
クラス図:
2.demoコード:
ポリシーインタフェース:
パブリックインターフェース戦略{
公共のint doOperation(INT NUM1、INT NUM2)。
}
戦略・インタフェース・クラス:
パブリッククラスStrategyAdd戦略{実装
@Override
公共INT doOperation(INT NUM1、INT NUM2){
戻りNUM1 + NUM2と、
}
}
publicクラスStrategyMultiply戦略{実装
@Override
公共INT doOperation(INT NUM1、INT NUM2){
戻りNUM1の*のNUM2と、
}
}
ポリシーコンテキスト:
パブリッククラスStrategyContex {
戦略戦略。
公共StrategyContex(戦略戦略){
this.strategy =戦略。
}
公共ボイドsetStrategy(戦略戦略){
this.strategy =戦略。
}
公共INT executeStrategy(INT NUM1、INT NUM2){
strategy.doOperation(NUM1、NUM2)を返します。
}
}
コールのデモ:
パブリッククラスStrategyDemo {
パブリック静的無効メイン(文字列[] args){
int型NUM1 = 2、NUM2 = 3。
StrategyContex contextAdd =新しいStrategyContex(新StrategyAdd());
System.out.println(contextAdd.executeStrategy(NUM1、NUM2))。
StrategyContex contextMultiply =新しいStrategyContex(新StrategyMultiply());
System.out.println(contextMultiply.executeStrategy(NUM1、NUM2))。
System.out.println( "*************");
contextMultiply.setStrategy(新しいStrategyAdd());
System.out.println(contextMultiply.executeStrategy(NUM1、NUM2))。
}
}
デモの出力を呼び出します。