大话设计模式-策略模式

大话设计模式-策略模式

 

        ConcreteStrategyA.java
        ConcreteStrategyB.java
        ConcreteStrategyC.java
        Context.java
        Main.java
        Strategy.java

 Strategy是所有具体策略的父类,里面定义了一个抽象方法,是子类要实现的具体“算法”:

public abstract class Strategy {
    public abstract void AlgorithmInterface();
}

 Context是执行“算法”的类:

public class Context {
    private Strategy strategy;

    /**
     * @param strategy 具体的策略对象
     */
    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    /**
     * 根据具体的策略对象 调用其算法
     */
    public void ContextInterface() {
        strategy.AlgorithmInterface();
    }
}

ConcreteStrategyA具体的算法实现类: 

public class ConcreteStrategyA extends Strategy{
    @Override
    public void AlgorithmInterface() {
        System.out.println("算法A实现");
    }
}
public class ConcreteStrategyB extends  Strategy{
    @Override
    public void AlgorithmInterface() {
        System.out.println("算法B实现");
    }
}
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();
    }
}