策略设计模式

策略设计模式:

  1. 需要有若干策略实现,每一个策略是一个接口的子实现
  2. 把接口作为类型的属性,或者把接口作为方法的参数
  3. 回调函数
  4. 组合属性,组合方法的参数
  5. 多态
  6. 程序的移植性高,扩展性高,维护性高

策略模式设计举例:

      removeIf(Predicate接口);

      线程 Thread t=new Thread(Runnable接口)

 

策略设计模式定义: 定义一组算法,将算法封装起来,使他们可以互换

策略设计模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换.

策略设计模式的结构:

封装类: 也叫上下文,对从策略进行二次封装,目的是避免高层模块对策略的直接调用

抽象策略:通常是一个接口,当各个实现类中存在重复逻辑时,则使用抽象类来封装这部分公共的代码

具体策略: 具体策略角色通常是由一组封装了算法的类来担任,这些类之间可以根据需要自由替换

优点:

  1. 策略类之间可以自由切换,由于策略类实现自同一个抽象,所以他们之间可以自由切换
  2. ‘易于扩展,增加新的策略对策略模式来说十分容易,基本上可以再不改变源代码的基础上进行扩展
  3. 避免使用多重条件,如果不使用策略模式,对于所有算法,必须使用条件语句进行连接,通过条件判断执行那种算法’

缺点:

  1. 维护各个策略类会给开发带来额外开销,策略类越多,就令人头大
  2. 必须对客户端(调用者)暴露所有的策略类,因为客户端决定调用那种策略,所以应该知道都存在什么策略,并且了解各种策略之间的区别,否则喉管很严重

 

策略设计模式的实质就是面向对象的继承和多态,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值