ポリシーモード-Java
1792 ワード
戦略モードの機能は具体的なアルゴリズムを実現し、具体的な業務処理から独立して、それらを単独のアルゴリズムクラスに実現します.
これによって一連のアルゴリズムを形成し、これらのアルゴリズムを相互に置き換えることができる.
戦略モードの重心はどのようにアルゴリズムを実現するのではなく、どのようにしてこれらのアルゴリズムを組織し、呼び出しますか?
のメンテナンス性と拡張性があります.
利点:1、複数の条件文を避ける.
2,より良い拡張性(新しい実装クラスを追加).
欠点:1、クライアントはすべてのポリシークラスを知っている必要があります.
2,オブジェクトの数を増やしました.
簡単な例を示します.
これによって一連のアルゴリズムを形成し、これらのアルゴリズムを相互に置き換えることができる.
戦略モードの重心はどのようにアルゴリズムを実現するのではなく、どのようにしてこれらのアルゴリズムを組織し、呼び出しますか?
のメンテナンス性と拡張性があります.
利点:1、複数の条件文を避ける.
2,より良い拡張性(新しい実装クラスを追加).
欠点:1、クライアントはすべてのポリシークラスを知っている必要があります.
2,オブジェクトの数を増やしました.
簡単な例を示します.
/**
* 1. 。
* 2. , 。
* 3. 。
* 4. , set get 。
*/
class StrategyExample {
public static void main(String[] args) {
Context context;
context.setStrategy(new FirstStrategy());
context.execute();
context.setStrategy(new SecondStrategy());
context.execute();
context.setStrategy(new ThirdStrategy());
context.execute();
}
}
//
interface Strategy {
void execute();
}
//
class FirstStrategy implements Strategy {
public void execute() {
System.out.println("Called FirstStrategy.execute()");
}
}
//
class SecondStrategy implements Strategy {
public void execute() {
System.out.println("Called SecondStrategy.execute()");
}
}
//
class ThirdStrategy implements Strategy {
public void execute() {
System.out.println("Called ThirdStrategy.execute()");
}
}
//
class Context {
Strategy strategy;
public Context(Strategy strategy)
{
this.strategy = strategy;
}
public void setStrategy(Strategy strategy)
{
this.strategy = strategy;
}
public Strategy getStrategy()
{
return this.strategy;
}
public void execute() {
this.strategy.execute();
}
}