策略模式

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

在处理事情之前需要走一个后门
第二步,还需要人开个绿灯
事情结束之前,还需要有人扫尾工作
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值