1.定义一个策略接口IStrategy.java
/**
* 定义一个策略接口,operate是要被实现的方法
*/
public interface IStrategy {
public void operate();
}
2.定义3种行为,实现IStrategy 中的operate方法
- 在行为BackDoor.java中实现operate方法
public class BackDoor implements IStrategy {
@Override
public void operate() {
System.out.println("在处理事情之前需要走一个后门");
}
}
- 在行为GivenGreenLight.java中实现operate方法
public class GivenGreenLight implements IStrategy {
@Override
public void operate() {
System.out.println("第二步,还需要人开个绿灯");
}
}
- 在行为BlockEnemy.java中实现operate方法
public class BlockEnemy implements IStrategy {
@Override
public void operate() {
System.out.println("事情结束之前,还需要有人扫尾工作");
}
}
3.定义一个容器Context.java
/**
* 定义一个容器,调用者使用容器去调用行为
* 程序解耦
*/
public class Context {
private IStrategy iStrategy;
public Context(IStrategy iStrategy) {
this.iStrategy = iStrategy;
}
/**
* 执行操作
*/
public void operate() {
iStrategy.operate();
}
}
4.定义调用者ZhaoYun.java
/**
* 定义调用者
* 策略模式的优势:高内聚,低耦合
* 运用了Java特性:多态
*/
public class ZhaoYun {
public static void main(String[] arges) {
Context context;
context = new Context(new BackDoor());
context.operate();
context = new Context(new GivenGreenLight());
context.operate();
context = new Context(new BlockEnemy());
context.operate();
}
}
5.程序运行结果
在处理事情之前需要走一个后门
第二步,还需要人开个绿灯
事情结束之前,还需要有人扫尾工作