书签 分享 收藏 举报 版权申诉 / 15
上传文档赚钱

类型第三讲策略模式课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4961731
  • 上传时间:2023-01-28
  • 格式:PPT
  • 页数:15
  • 大小:426.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第三讲策略模式课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第三 策略 模式 课件
    资源描述:

    1、第三章第三章 策略模式策略模式韩韩 格格2011年年3月月提纲提纲3.1 问题描述问题描述3.2 典型案例典型案例 3.3 策略模式策略模式3.4 效果与适应性效果与适应性3.1 问题描述问题描述 w 问题问题-在处理客户相同的业务时,可能有不同的逻辑处理算在处理客户相同的业务时,可能有不同的逻辑处理算法。客户需要多种不同的算法实现。法。客户需要多种不同的算法实现。-客户希望在运行时根据上下文选择其中一个算法。使客户希望在运行时根据上下文选择其中一个算法。使用算法的类变得复杂而难于维护,尤其当需要支持多用算法的类变得复杂而难于维护,尤其当需要支持多种算法且每种算法都很复杂时问题会更加严重;种算

    2、法且每种算法都很复杂时问题会更加严重;-不同时候需要不同的算法,支持并不使用的算法可能不同时候需要不同的算法,支持并不使用的算法可能带来性能的负担;带来性能的负担;-算法的实现和使用算法的对象紧紧耦合在一起,使新算法的实现和使用算法的对象紧紧耦合在一起,使新增算法或修改算法变得十分困难,系统应对变化的能增算法或修改算法变得十分困难,系统应对变化的能力很差。力很差。3.1 问题描述问题描述w方法方法-依据面向对象的思想,我们所能想到的办法就依据面向对象的思想,我们所能想到的办法就是将每种算法的实现都剥离出来构成一个个独是将每种算法的实现都剥离出来构成一个个独立的算法对象,再从这些算法对象中抽象出

    3、公立的算法对象,再从这些算法对象中抽象出公共的算法接口,最后将算法接口组合到使用算共的算法接口,最后将算法接口组合到使用算法的类中。上述思路就引入了一个新的设计模法的类中。上述思路就引入了一个新的设计模式策略模式。式策略模式。3.2 典型案例典型案例w 超市打折收银软件超市打折收银软件为提高超市收益,超市开展促销活动。除了正常收费方式为提高超市收益,超市开展促销活动。除了正常收费方式外,添加对某些产品打折收费和满额返现收费方式。例如:外,添加对某些产品打折收费和满额返现收费方式。例如:商品打商品打8折、打折、打7折、满折、满300元消费返回元消费返回100元、满元、满500返返200。实现能够

    4、计算总收费额度的功能。实现能够计算总收费额度的功能。如何添加和修改如何添加和修改各式各样的多种各式各样的多种收费方式收费方式?3.2 典型案例典型案例3.2 典型案例典型案例w 收银软件设计类图收银软件设计类图CashContext+GetResult():doubleCashNormal+acceptCash():doubleCashSuper+acceptCash():doubleCashRebate+acceptCash():doubleCashReturn+acceptCash()3.2 典型案例典型案例abstract class CashSuper /收取现金的父类收取现金的父类

    5、public abstract double AcceptCash(double cash);class CashRebate:CashSuper /按一定打折率收取现金类按一定打折率收取现金类 private double discount=1.0;public CashRebate(double _discount)discount=_discount;public override double AcceptCash(double cash)return cash*discount;w 部分核心源码部分核心源码3.2 典型案例典型案例 public virtual GroupBox Cr

    6、eateGroupBox(String title,Control control)GroupBox gb=new GroupBox();gb.Text=title;gb.Dock=DockStyle.Fill;gb.Controls.Add(control);control.Dock=DockStyle.Fill;return gb;public virtual Panel CreatePanel()Panel pl=new Panel();pl.BackColor=Color.White;pl.Paint+=new PaintEventHandler(pl_Paint);return pl

    7、;protected void pl_Paint(object sender,PaintEventArgs pea)int nPoint=101;double w=(Panel)sender).Width-1;double h=(Panel)sender).Height-1;Point points=new PointnPoint;for(int i=0;i nPoint;i+)double t=(double)i)/(nPoint-1);pointsi.X=(int)(t*w);pointsi.Y=(int)(4*h*(t-.5)*(t-.5);Pen p=new Pen(Color.Bla

    8、ck);Graphics g=pea.Graphics;g.DrawLines(p,points);3.3 策略模式策略模式w 策略模式(策略模式(Strategy)-它定义了算法家族,分别对其封装起来,通过它定义了算法家族,分别对其封装起来,通过基类让它们之间可以相互替换,而算法的变化基类让它们之间可以相互替换,而算法的变化不会影响到使用算法的客户。不会影响到使用算法的客户。3.3 策略模式策略模式Strategy+AlgorithmInterface()ConcreteStrategyA+AlgorithmInterface()Context-Strategy+ContextInterfa

    9、ce()Context类是配置上下文,其中包含一个Strategy对象作为属性,并对其进行维护Strategy策略类,定义了所有受支持算法的接口继承于Strategy的具体策略类,封装了具体的算法或行为ConcreteStrategyB+AlgorithmInterface()ConcreteStrategyC+AlgorithmInterface()策略模式类结构图3.4 效果与适应性效果与适应性w 优点优点-策略模式定义一系列算法,从概念上来看,所有这些算策略模式定义一系列算法,从概念上来看,所有这些算法都是完成相同或相似的工作,只是实现不同。它能以法都是完成相同或相似的工作,只是实现不同

    10、。它能以相同的方式调用所有算法,减少各种算法类与使用算法相同的方式调用所有算法,减少各种算法类与使用算法类之间的耦合。类之间的耦合。-策略模式的策略模式的Strategy类层次为类层次为Context定义了一系列的可定义了一系列的可供重用的算法或行为。因为继承有助于析取出这些算法供重用的算法或行为。因为继承有助于析取出这些算法的公共功能。的公共功能。3.4 效果与适应性效果与适应性-策略模式也化简了单元测试,因为每一个算法都在一个策略模式也化简了单元测试,因为每一个算法都在一个类内,可以通过自己的接口单独测试。类内,可以通过自己的接口单独测试。w 缺点缺点-客户端必须知道所有的策略类,并自行决

    11、定使用哪一个客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道所有的算法或行为的情况。于客户端知道所有的算法或行为的情况。-策略模式造成很多的策略类。有时候可以通过把依赖于策略模式造成很多的策略类。有时候可以通过把依赖于环境的状态保存到客户端里面,而将策略类设计成可共环境的状态保存到客户端里面,而将策略类设计成可共享的,这样策略类实例可以被不同客户端使用。换言之,享的,这样策略类实例可以被不同客户端使用。换言之,可以使用享元模式来减少对象的数量。可以使用享元模式来减少对象的数量。3.4 效果与适应性效果与适应性w 适用范围适用范围-策略模式就是用来封装算法的。在实践中,我策略模式就是用来封装算法的。在实践中,我们发现可以用它来封装几乎任何类型的规则,们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要再不同情况下应用只要在分析过程中听到需要再不同情况下应用不同的业务规则,就可以考虑使用策略模式处不同的业务规则,就可以考虑使用策略模式处理这种变化的肯能性。理这种变化的肯能性。The End Thanks!

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第三讲策略模式课件.ppt
    链接地址:https://www.163wenku.com/p-4961731.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库