ポリシーモード-Java

1792 ワード

戦略モードの機能は具体的なアルゴリズムを実現し、具体的な業務処理から独立して、それらを単独のアルゴリズムクラスに実現します.
これによって一連のアルゴリズムを形成し、これらのアルゴリズムを相互に置き換えることができる.
     戦略モードの重心はどのようにアルゴリズムを実現するのではなく、どのようにしてこれらのアルゴリズムを組織し、呼び出しますか?
のメンテナンス性と拡張性があります.
     利点: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();
    }
}