[1] [组件协作] ( 2 ) 策略模式 Strategy (用于替代分支语句)

总结

  • 用扩展的方式来支持未来的变化.

  • 定义一组算法,
    把它们一个个封装起来,
    并且使它们可互相替换(变化),
    使得算法可独立于使用它的客户端(稳定)而变化(扩展/子类化).

  • 该模式提供了if else以外的另一种选择,
    消除条件判断语句,就是在解耦合.
    含有许多条件判断语句的代码,
    通常都需要Strategy模式.

  • Strategy及其子类为组件提供了一系列可重用的算法,
    从而可以使得类型在运行时,
    方便地根据需要,
    在各个算法之间进行切换。

  • 在哪里用?
    在开发中当看见会扩展的if else时,
    你就该想一想是不是使用策略模式了.




主要组件

  • 策略接口
  • 具体策略
  • context




C++例子

例子中的代码, 在未来会不断地增加新的地区支持需求, 从而引发CalculateTax()的修改.
image




角色结构

image




posted @ 2023-10-12 15:16  qwertzxc  阅读(12)  评论(0)    收藏  举报