策略模式
- 含义
- 策略(Strategy):处理一件事情的不同方式,比如出门吃饭,我们可以开车、打车、走路、坐飞机等。策略也可以为算法
- 策略模式:将策略封装起来,是的在上下文中可以相互替换
- 目的
定义一系列的策略,将它们封装起来, 并且使它们可在上下文中相互替换。主要解决多种策略相似的情况下,使用if-else所带来的复杂和难以维护时。 - 优缺点
- 优:1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。
- 缺:1、策略类会增多。 2、所有策略类都需要对外暴露。
- 应用实例
- 1、如果系统中许多类之间的区别只是在于它们的行为上,那么使用策略模式可以动态的让一个对象在许多行为中选择一种
- 代码实现
public interface Strategy {
public void run(String message);
}
- StrategyImpl1/StrategyImpl2
public class StrategyImpl1 implements Strategy{
@Override
public void run(String message) {
System.out.println("策略1:" + message);
}
}
public class StrategyImpl2 implements Strategy{
@Override
public void run(String message) {
System.out.println("策略2:" + message);
}
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void start(String message){
strategy.run(message);
}
public static void main(String[] args) {
Context context = new Context(new StrategyImpl1());
context.start("执行");
context = new Context(new StrategyImpl2());
context.start("执行");
}
}
- 执行结果