例子来源于秦小波的《设计模式之禅》
1、
/**
* @author zhaojianbo
* 策略模式中的接口类,所有的策略都需要实现此接口
*/
public interface IStrategy {
//每个锦囊妙计都需要执行的方法
void operate();
}
2、下面三段代码代表了三个策略
2.1
/**
* @author zhaojianbo
*/
public class BackDoor implements IStrategy {
@Override
public void operate() {
System.out.println("锦囊妙计1");
}
}
2.2
/**
* @author zhaojianbo
*/
public class GivenGreenLight implements IStrategy {
@Override
public void operate() {
System.out.println("锦囊妙计2");
}
}
2.3
/**
* @author zhaojianbo
*/
public class BlockEnemy implements IStrategy{
@Override
public void operate() {
System.out.println("将囊妙计3");
}
}
3.将所有的策略放入到一个盒子中,后期可以从盒子中取出任何一个策略
/**
* @author zhaojianbo
*/
public class Context {
private IStrategy iStrategy;
public Context(IStrategy iStrategy) {
this.iStrategy = iStrategy;
}
public void operate() {
iStrategy.operate();
}
}
4、测试类
/**
* @author zhaojianbo
*/
public class ZhaoYun {
public static void main(String[] args) {
Context context;
System.out.println("------1-----");
context = new Context(new BackDoor());
context.operate();
System.out.println("------end------");
System.out.println("------2-----");
context = new Context(new GivenGreenLight());
context.operate();
System.out.println("------end---");
context = new Context(new BlockEnemy());
context.operate();
System.out.println("------3---");
System.out.println("------end-----");
}
}