策略模式简述

我觉得设计模式这东西,最好还是反复看看书,推荐Head First我也是看这个的(https://pan.baidu.com/s/1x0aiZHEz_UMa_fKa8QNWbg       ----    njh1)

嗯,不用谢。

标准的定义是:策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户

简单来讲就是有好几个算法,他就是用来决定使用哪一套的

类图就酱紫啦

代码如下:

package cn.bl.strategy;

/**
 * @Deacription 使用策略
 * @Author BarryLee
 * @Date 2019/9/22 16:21
 */
public class Main {
  public static void main(String[] args) {
    Context context = new Context();
    context.setStrategy(new ConcreteStrategyA());
    context.algorithm();

    context.setStrategy(new ConcreteStrategyB());
    context.algorithm();
  }
}
package cn.bl.strategy;

/**
 * 策略接口
 */
public interface Strategy {
  /**
   * 策略方法
   */
  void algorithm();
}
package cn.bl.strategy;

/**
 * @Deacription 环境类
 * @Author BarryLee
 * @Date 2019/9/22 16:21
 */
public class Context {

  // 策略是私有的
  private Strategy strategy;

  // 获取策略方法
  public Strategy getStrategy() {
    return strategy;
  }

  // 设置策略
  public void setStrategy(Strategy strategy) {
    this.strategy = strategy;
  }

  // 调用策略
  public void algorithm() {
    strategy.algorithm();
  }
}
package cn.bl.strategy;

/**
 * @Deacription 具体策略类A
 * @Author BarryLee
 * @Date 2019/9/22 16:21
 */
public class ConcreteStrategyA implements Strategy{
  @Override
  public void algorithm() {
    System.out.println("strategy A");
  }
}
package cn.bl.strategy;

/**
 * @Deacription 具体策略类B
 * @Author BarryLee
 * @Date 2019/9/22 16:22
 */
public class ConcreteStrategyB implements Strategy{
  @Override
  public void algorithm() {
    System.out.println("strategy B");
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值