策略模式(Strategy)

1. 模式的定义

假设现在要实现一个简化的报价管理,实现如下的功能: 1. 对于普通客户或者新客户报全价 2. 对于老客户报的价格,统一折扣5% 3. 对于大客户报的价格,统一折扣10% 对不同的人员报不同的价格

到底该如何实现,才能够让价格类中的计算报价的算法,能很容易地实现可维护,可扩展,又能动态地切换变化呢?

策略模式的定义: 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换,使得算法可独立于使用它的客户而变化

2. UML图

Strategy:策略接口,用来约束一系列具体的策略算法,Context使用这个接口来调用具体的策略实现定义的算法

ConcreteStrategy:具体的策略实现,也就是具体的算法实现

Context:上下文,负责和具体的策略类交互,通常会持有一个真正的策略实现

代码:

3. 研磨设计模式

1)策略模式的功能:把具体的算法实现从具体业务处理中独立出来,把它们实现成为单独的算法类,从而形成一系列的算法,并让这些算法可以相互替换

2)Context和Strategy的关系 策略实现对象也可以从上下文获取所需要的数据,可以将上下文当作参数传递给策略实现对象。

3) 容错恢复机制 比如说采用策略模式,把日志记录到数据库和把日志记录到文件当做两种记录日志的策略,然后再运行期间根据需要进行动态的切换

4)策略模式结合模板方法模式 发现一系列的算法的实现上存在公共功能,只是在某些局部步骤上有所不同。

5)策略模式的本质:分离算法,选择实现

文章自:https://blog.csdn.net/jiangxishidayuan/article/details/51967015

原文发布于微信公众号 - JAVA高级架构(gaojijiagou)

原文发表时间:2018-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏应用案例

RIOT 与 ImageOptim - 两款 Win 和 Mac 上好用的免费图片优化无损压缩工具

不管你是网站站长、自媒体、博客作者、摄影师、设计师,还是需要在网上分享传输图片/照片的人,都希望自己上传图片耗时更短、图片体积更小,别人浏览时又能更快下载显示出...

43650
来自专栏机器之心

业界 | 谷歌发布机器学习工具库Kubeflow:可提供最佳OSS解决方案

选自GitHub 机器之心编译 Kubeflow 是谷歌发布的一个机器学习工具库,致力于使运行在 Kubernetes 上的机器学习变的更轻松、便捷和可扩展;K...

28940
来自专栏机器之心

我的深度学习开发环境详解:TensorFlow + Docker + PyCharm等,你的呢(附问卷)

选自Upflow.co 作者:Killian 机器之心编译 参与:Nurhachu Null、李亚洲 在这篇文章中,研究员 Killian 介绍了自己的深度学习...

68860
来自专栏机器之心

开源 | 伯克利AI分布式框架Ray,兼容TensorFlow、PyTorch与MXNet

42990
来自专栏开源项目

你真的会用 Issue 吗?

大家对 Issue 一定不陌生,它灵活又实用,可以用来做 Bug 跟踪、需求管理、项目管理、交流探讨、写文章…… 不少新用户在后台问我们,如何优雅地使用 Iss...

31050
来自专栏杨建荣的学习笔记

通过图表分析oracle的parallel性能(r2第37天)

并行特性在数据库里对于性能的提升很有帮助,尤其是大批量的数据处理。今天对于并行的性能情况进行了简单的图表分析。 为了能够比较合理的比较数据,对数据库里的2张大...

31050
来自专栏HBStream流媒体与音视频技术

MP4文件格式的解析,以及MP4文件的分割算法

1.3K130
来自专栏腾讯技术工程官方号的专栏

数平精准推荐 | OCR技术之系统篇

94550
来自专栏ATYUN订阅号

人工智能为什么能做的事情这么多?密码猜测在它面前也能行得通

密码猜测之所以有效是因为… 人类是可预测的 ? 如果你要求小明设置一个密码。他可能只是简单地把密码设置为“xiaoming”。现在,系统告诉他密码必须包含数字...

35460
来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ在线沙龙|测试与图像识别

测试与图像识别 活动时间:2016年3月16日 QQ群视频交流 活动介绍:TMQ在线沙龙第十七期分享 本次分享的主题是:测试与图像识别 共有43位测试小伙伴报名...

30060

扫码关注云+社区

领取腾讯云代金券