




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章策略模式 韩格2011年3月 提纲 3 1问题描述3 2典型案例3 3策略模式3 4效果与适应性 3 1问题描述 问题在处理客户相同的业务时 可能有不同的逻辑处理算法 客户需要多种不同的算法实现 客户希望在运行时根据上下文选择其中一个算法 使用算法的类变得复杂而难于维护 尤其当需要支持多种算法且每种算法都很复杂时问题会更加严重 不同时候需要不同的算法 支持并不使用的算法可能带来性能的负担 算法的实现和使用算法的对象紧紧耦合在一起 使新增算法或修改算法变得十分困难 系统应对变化的能力很差 3 1问题描述 方法依据面向对象的思想 我们所能想到的办法就是将每种算法的实现都剥离出来构成一个个独立的算法对象 再从这些算法对象中抽象出公共的算法接口 最后将算法接口组合到使用算法的类中 上述思路就引入了一个新的设计模式 策略模式 3 2典型案例 超市打折收银软件为提高超市收益 超市开展促销活动 除了正常收费方式外 添加对某些产品打折收费和满额返现收费方式 例如 商品打8折 打7折 满300元消费返回100元 满500返200 实现能够计算总收费额度的功能 如何添加和修改各式各样的多种收费方式 3 2典型案例 3 2典型案例 收银软件设计类图 3 2典型案例 abstractclassCashSuper 收取现金的父类 publicabstractdoubleAcceptCash doublecash classCashRebate CashSuper 按一定打折率收取现金类 privatedoublediscount 1 0 publicCashRebate double discount discount discount publicoverridedoubleAcceptCash doublecash returncash discount 部分核心源码 3 2典型案例 publicvirtualGroupBoxCreateGroupBox Stringtitle Controlcontrol GroupBoxgb newGroupBox gb Text title gb Dock DockStyle Fill gb Controls Add control control Dock DockStyle Fill returngb publicvirtualPanelCreatePanel Panelpl newPanel pl BackColor Color White pl Paint newPaintEventHandler pl Paint returnpl protectedvoidpl Paint objectsender PaintEventArgspea intnPoint 101 doublew Panel sender Width 1 doubleh Panel sender Height 1 Point points newPoint nPoint for inti 0 i nPoint i doublet double i nPoint 1 points i X int t w points i Y int 4 h t 5 t 5 Penp newPen Color Black Graphicsg pea Graphics g DrawLines p points 3 3策略模式 策略模式 Strategy 它定义了算法家族 分别对其封装起来 通过基类让它们之间可以相互替换 而算法的变化不会影响到使用算法的客户 3 3策略模式 3 4效果与适应性 优点策略模式定义一系列算法 从概念上来看 所有这些算法都是完成相同或相似的工作 只是实现不同 它能以相同的方式调用所有算法 减少各种算法类与使用算法类之间的耦合 策略模式的Strategy类层次为Context定义了一系列的可供重用的算法或行为 因为继承有助于析取出这些算法的公共功能 3 4效果与适应性 策略模式也化简了单元测试 因为每一个算法都在一个类内 可以通过自己的接口单独测试 缺点客户端必须知道所有的策略类 并自行决定使用哪一个策略类 这就意味着客户端必须理解这些算法的区别 以便适时选择恰当的算法类 换言之 策略模式只适用于客户端知道所有的算法或行为的情况 策略模式造成很多的策略类 有时候可以通过把依赖于环境的状态保存到客户端里面 而将策略类设计成可共享的 这样策略类实例可以被不同客户端使用 换言之 可以使用享元模式来减少对象的数量 3 4效果与适应性 适用范围策略模式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石棉在环境保护领域中的应用考核试卷
- 船舶水上求生与逃生技术考核试卷
- 《睡眠障碍的影响与对策》课件
- 2025年防眩光太阳镜项目建议书
- 学生资助诚信教育体系构建
- 节能建筑生态景观施工技术考核试卷
- 《STEAMI-诊疗指南》课件
- 纤维增强合成材料的制造与应用考核试卷
- 《亚太财务报告》课件
- 室内设计材料汇报
- 六年级数学竞赛试题及答案(六套)
- DBJ50T-476-2024 市政管网监测技术标准
- 2024-2030年中国智能音箱行业消费态势及投资潜力预测报告
- 反比例函数函数K的几何意义市公开课一等奖省赛课获奖课件
- 2024-2030年中国回收聚对苯二甲酸乙二酯(PET)行业市场发展趋势与前景展望战略分析报告
- 会议保障实施方案
- JGJ196-2010建筑施工塔式起重机安装、使用、拆卸安全技术规程
- 监狱餐厅承包协议
- (正式版)SH∕T 3541-2024 石油化工泵组施工及验收规范
- 数字孪生+智慧楼宇解决方案-
- 大学生家族史范文3000字
评论
0/150
提交评论