1 简介
策略模式(Strategy Pattern)定义:定义一系列算法,将每一个算法封装起来,让算法独立于使用它的客户而变化,并让它们可以相互替换。
2 代码
(1)环境类(Context)
环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略。在环境类中维护一个对抽象策略类的引用实例,用于定义所采用的策略。
public class Context {
private Strategy strategy;
public void setStrategy(Strategy strategy) {
this.strategy=strategy;
}
public void algorithm() {
strategy.algorithm();
}
}
(2)抽象策略类(Strategy)
public abstract class Strategy {
public abstract void algorithm();
}
(3)具体策略类(StrategyA、StrategyB)
public class StrategyA extends Strategy{
@Override
public void algorithm() {
System.out.println("执行策略A");
}
}
public class StrategyB extends Strategy{
@Override
public void algorithm() {
System.out.println("执行策略B");
}
}
(4)客户端(Client)
public class Client {
public static void main(String[] args) {
Context context=new Context();
context.setStrategy(new StrategyA());
context.algorithm();
context.setStrategy(new StrategyB());
context.algorithm();
}
}
执行策略A
执行策略B