策略模式

来源:互联网 发布:哈布斯堡的灭亡知乎 编辑:程序博客网 时间:2024/06/18 14:10

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.程序运行结果

在处理事情之前需要走一个后门第二步,还需要人开个绿灯事情结束之前,还需要有人扫尾工作
0 0
原创粉丝点击