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();
}
}