23个设计模式(课4):strategy模式

知识点
  1. 对于多分类的情况,大部分需要考虑是否需要使用strategy模式,原因是这样可以松耦合,把各类情况单独处理,从而可以独立扩展。
  2. 小部分,对于分类固定不变,比如男女分类,这种可以直接使用if else/switch case 模式。
  3. strategy模式,减少高级缓存的占用,提高代码效率。
  4. 策略模式仅仅封装算法(包括添加 & 删除),但策略模式并不决定在何时使用何种算法,算法的选择由客户端来决定
优点
  • 策略类之间可以自由切换由于策略类都实现同一个接口,所以使它们之间可以自由切换。
    易于扩展
  • 增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合“开闭原则“
  • 避免使用多重条件选择语句(if else),充分体现面向对象设计思想。
缺点
  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
  • 策略模式将造成产生很多策略类,可以通过使用享元模式在一定程度上减少对象的数量。
个人解读

这和前面的template Method 模式有什么不同,感觉都是使用C++多态来来实现。
从定义来看:

  1. template Method 更加注重的是整个算法的模块之间的依赖顺序,主体算法骨架的稳定性,考虑中间过程的一些算法实现可以重新定义,晚绑定,依赖于应用时需要怎么样的功能。
  2. strategy 更加注重某一个系列的算法的组成关系,是各自独立实现,可扩展的。

参考博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值