• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

策略模式(Strategy)

技术杂谈 勤劳的小蚂蚁 2个月前 (02-15) 64次浏览 已收录 0个评论 扫描二维码

1. 模式的定义

假设现在要实现一个简化的报价管理,实现如下的功能: 
1. 对于普通客户或者新客户报全价 
2. 对于老客户报的价格,统一折扣5% 
3. 对于大客户报的价格,统一折扣10% 
对不同的人员报不同的价格
到底该如何实现,才能够让价格类中的计算报价的算法,能很容易地实现可维护,可扩展,又能动态地切换变化呢?
策略模式的定义: 
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换,使得算法可独立于使用它的客户而变化

2. UML图

Strategy:策略接口,用来约束一系列具体的策略算法,Context使用这个接口来调用具体的策略实现定义的算法
ConcreteStrategy:具体的策略实现,也就是具体的算法实现
Context:上下文,负责和具体的策略类交互,通常会持有一个真正的策略实现
代码:

3. 研磨设计模式
1)策略模式的功能:把具体的算法实现从具体业务处理中独立出来,把它们实现成为单独的算法类,从而形成一系列的算法,并让这些算法可以相互替换
2)Context和Strategy的关系 
策略实现对象也可以从上下文获取所需要的数据,可以将上下文当作参数传递给策略实现对象。
3) 容错恢复机制 
比如说采用策略模式,把日志记录到数据库和把日志记录到文件当做两种记录日志的策略,然后再运行期间根据需要进行动态的切换
4)策略模式结合模板方法模式 
发现一系列的算法的实现上存在公共功能,只是在某些局部步骤上有所不同。
5)策略模式的本质:分离算法,选择实现

丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:策略模式(Strategy)
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00