首页 > 其他 > 详细

24种设计模式学习笔记之策略模式

时间:2020-02-25 12:39:25      阅读:52      评论:0      收藏:0      [点我收藏+]

策略模式(Strategy)

    定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

技术分享图片

CashSuper:  收费计算策略抽象类

   正常收费类: 正常收费。acceptCash() 办法 直接返回金额
   打折收费类: 需要在构造器中初始化打折参数   在acceptCash() 办法进行打折计算
   满多少返利类:需要在构造器中初始化 满多少条件 参数。返利多少 参数,acceptCash() 办法进行计算。满足条件,总金额-返利金额=返回金额。

  客户端使用的时候。只需要 new CashContext(“判断参数”)。然后调用 getResult()。得到最终的计算结果。因为  CashContext 类的构造器根据传入的参数已经得到了具体的计算策略对象了。

 何时使用

  • 一个系统有许多类,而区分它们的只是他们直接的行为时

  2. 方法

  • 将这些算法封装成一个一个的类,任意的替换

  3. 优点

  • 算法可以自由切换
  • 避免使用多重条件判断(如果不用策略模式我们可能会使用多重条件语句,不利于维护)
  • 扩展性良好,增加一个策略只需实现接口即可

  4. 缺点

  • 策略类数量会增多,每个策略都是一个类,复用的可能性很小
  • 所有的策略类都需要对外暴露

  5. 使用场景

  • 多个类只有算法或行为上稍有不同的场景
  • 算法需要自由切换的场景
  • 需要屏蔽算法规则的场景

  6. 应用实例

  • 出行方式,自行车、汽车等,每一种出行方式都是一个策略
  • 商场促销方式,打折、满减等
  • Java AWT中的LayoutManager,即布局管理器

 

24种设计模式学习笔记之策略模式

原文:https://www.cnblogs.com/xiaoyangxiaoen/p/12360827.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!