一、应用场景
我们在现实的开发的过程中,可能会涉及到某种功能需要有多种方式实现,不同的情境下使用不同的方式去实现不同的策略。策略模式就是把一个类中容易发生改变,或者在以后会发生改变的地方提取出来形成一个接口(A),类(B)、类(C)实现接口(A),类(D)封装了策略具体执行的方法,所以在外部类(E)调用时,只需要向类(D)传递策略选择,类(D)就会去执行具体的策略。
二、优、缺点
优点:可以动态改变对象的动作
缺点:1、客户端需要知道所有的策略,需要去决定要使用哪个策略
2、可能会产生许多的策略类
三、具体代码
1、接口类
package com.wcb.beijing.strategy;
public interface Strategy {
/**
* 策略
* @return
*/
public void operate();
}
2、策略类
(1)
package com.wcb.beijing.strategy;
public class First implements Strategy {
@Override
public void operate() {
System.out.println("第一个策略:XXX");
}
}
(2)package com.wcb.beijing.strategy;
public class Second implements Strategy {
@Override
public void operate() {
System.out.println("第二个策略:XXX");
}
}
(3)
package com.wcb.beijing.strategy;
public class Third implements Strategy {
@Override
public void operate() {
System.out.println("第三个策略:XXX");
}
}
3、策略执行类
package com.wcb.beijing.strategy;
public class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public void operate(){
this.strategy.operate();
}
}
4、测试类
package com.wcb.beijing.strategy;
public class Executor {
public static void main(String[] args) {
Context context;
context = new Context(new First());
context.operate();
context = new Context(new Second());
context.operate();
context = new Context(new Third());
context.operate();
}
}