『設計モードシリーズ』---戦略モード


ポリシーモードは一連のアルゴリズムを定義する方法であり、概念的に見ると、これらのアルゴリズムはすべて同じ仕事をしているが、異なることを実現しているだけで、すべてのアルゴリズムを同じ方法で呼び出すことができ、アルゴリズムクラス間の結合を減らすことができる.
実際には、ほとんどのタイプのルールをカプセル化するために使用することができます.分析中に異なるビジネス・ルールを適用する時間が必要だと聞いたら、ポリシー・モードを使用してこのような変化を処理する可能性を考慮することができます.
/**
 *      
 * 
 * @author stefanie zhao
 * @date 2014-8-13   02:50:20
 */
public abstract class Strategy {
    //     
    public abstract void algorithmInterface();
}
/**
 * @author stefanie zhao
 * @date 2014-8-13   02:55:04
 */
public class Context {

    Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public void contextInterface() {
        strategy.algorithmInterface();
    }
}
/**
 * @author stefanie zhao
 * @date 2014-8-13   02:53:39
 */
public class ConcreteStrategyA extends Strategy {

    @Override
    public void algorithmInterface() {
        System.out.println("  A  ");
    }

}
/**
 * @author stefanie zhao
 * @date 2014-8-13   02:53:39
 */
public class ConcreteStrategyB extends Strategy {

    @Override
    public void algorithmInterface() {
        System.out.println("  B  ");
    }

}
/**
 * @author stefanie zhao
 * @date 2014-8-13   02:53:39
 */
public class ConcreteStrategyC extends Strategy {

    @Override
    public void algorithmInterface() {
        System.out.println("  C  ");
    }

}
public class Main {

    public static void main(String[] args) {

        Context context;

        context = new Context(new ConcreteStrategyA());
        context.contextInterface();

        context = new Context(new ConcreteStrategyB());
        context.contextInterface();

        context = new Context(new ConcreteStrategyC());
        context.contextInterface();
    }
}