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.程序运行结果
在处理事情之前需要走一个后门
第二步,还需要人开个绿灯
事情结束之前,还需要有人扫尾工作