欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C#设计模式-策略模式.ppt

    • 资源ID:70101030       资源大小:2.41MB        全文页数:23页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C#设计模式-策略模式.ppt

    www.ChinaSA.infoDDesign esign P Patternsatterns策略模式策略模式策略模式策略模式刘刘 伟伟(Sunny)www.ChinaSA.info大纲w策略模式概述w策略模式的结构与实现w策略模式的应用实例wPetShop 4.0中的订单处理w策略模式的优缺点与适用环境www.ChinaSA.info策略模式概述w旅游出行方式示意图www.ChinaSA.info策略模式概述w分析实现某个目标的途径不止一条,可根据实际情况选择实现某个目标的途径不止一条,可根据实际情况选择一条合适的途径一条合适的途径软件开发:软件开发:多种算法,例如排序、查找、打折等使用硬编码(Hard Coding)实现将导致系统违背开闭原则,扩展性差,且维护困难可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法策略类策略类www.ChinaSA.info策略模式概述w策略模式的定义对象行为型对象行为型模式模式策策略略模模式式:定义一一系系列列算算法法,将将每每一一个个算算法法封封装装起起来来,并让它们可以相互替换。策略模式让算法可以独立于使用它的客户变化。Strategy Pattern:Define a family of algorithms,encapsulate each one,and make them interchangeable.Strategy lets the algorithm vary independently from clients that use it.www.ChinaSA.info策略模式概述w策略模式的定义又称为又称为政策政策(Policy)模式模式每一个封装算法的类称之为每一个封装算法的类称之为策略策略(Strategy)类类策略模式提供了一种策略模式提供了一种可插入式可插入式(Pluggable)算法算法的实现的实现方案方案www.ChinaSA.info策略模式的结构与实现w策略模式的结构www.ChinaSA.info策略模式的结构与实现w策略模式的结构策略模式包含以下策略模式包含以下3个角色:个角色:Context(环境类)Strategy(抽象策略类)ConcreteStrategy(具体策略类)www.ChinaSA.info策略模式的结构与实现w策略模式的实现典型的抽象策略类代码:典型的抽象策略类代码:abstract class AbstractStrategy public abstract void Algorithm();/声明抽象算法www.ChinaSA.info策略模式的结构与实现w策略模式的实现典型的具体策略类代码:典型的具体策略类代码:class ConcreteStrategyA:AbstractStrategy/算法的具体实现public override void Algorithm()/算法Awww.ChinaSA.info策略模式的结构与实现w策略模式的实现典型的环境类代码:典型的环境类代码:class Contextprivate AbstractStrategy strategy;/维维持一个持一个对对抽象策略抽象策略类类的引用的引用public void SetStrategy(AbstractStrategy strategy)this.strategy=strategy;/调调用策略用策略类类中的算法中的算法public void Algorithm()strategy.Algorithm();www.ChinaSA.info策略模式的结构与实现w策略模式的实现典型的客户端代码片段:典型的客户端代码片段:Context context=new Context();AbstractStrategy strategy;strategy=new ConcreteStrategyA();/可可在在运运行行时时指指定定类类型型,通通过过配配置置文文件件和和反反射机制射机制实现实现context.SetStrategy(strategy);context.Algorithm();www.ChinaSA.info策略模式的应用实例w实例说明某软件公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票打折方式,具体打折方案如下:(1)学生凭学生证可享受票价8折优惠。(2)年龄在10周岁及以下的儿童可享受每张票减免10元的优惠(原始票价需大于等于20元)。(3)影院VIP用户除享受票价半价优惠外还可进行积分,积分累计到一定额度可换取电影院赠送的奖品。该系统在将来可能还要根据需要引入新的打折方式。现使用策略模式设计该影院售票系统的打折方案。www.ChinaSA.info策略模式的应用实例w实例类图电影票打折方案结构图电影票打折方案结构图www.ChinaSA.info策略模式的应用实例w实例代码(1)MovieTicket:电影票类,充当环境类:电影票类,充当环境类(2)Discount:折扣类,充当抽象策略类:折扣类,充当抽象策略类(3)StudentDiscount:学生票折扣类,充当具体策略类:学生票折扣类,充当具体策略类(4)ChildrenDiscount:儿童票折扣类,充当具体策略类:儿童票折扣类,充当具体策略类(5)VIPDiscount:VIP会员票折扣类,充当具体策略类会员票折扣类,充当具体策略类(6)配置文件配置文件App.config(7)Program:客户端测试类:客户端测试类演示演示演示演示参考代码参考代码(DesignPatternStrategySample)www.ChinaSA.info策略模式的应用实例w结果及分析如果需要更换具体策略类,无须修改源代码,只需修如果需要更换具体策略类,无须修改源代码,只需修改改配置文件配置文件即可,完全即可,完全符合开闭原则符合开闭原则 www.ChinaSA.infoPetShop 4.0中的订单处理wPetShop 4.0的BLL(Business Logic Layer,业务逻辑层)子项目局部结构PetShop订单策略类结构图订单策略类结构图www.ChinaSA.infoPetShop 4.0中的订单处理w配置文件web.config代码片段:www.ChinaSA.info策略模式的优缺点与适用环境w模式优点提供了提供了对开闭原则的完美支持对开闭原则的完美支持,用户可以在,用户可以在不修改原有系统的基础上选择算法或行为,不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或行为也可以灵活地增加新的算法或行为提供了提供了管理相关的算法族的办法管理相关的算法族的办法提供了一种提供了一种可以替换继承关系的办法可以替换继承关系的办法可以可以避免多重条件选择语句避免多重条件选择语句提供了一种提供了一种算法的复用机制算法的复用机制,不同的环境类,不同的环境类可以方便地复用策略类可以方便地复用策略类www.ChinaSA.info策略模式的优缺点与适用环境w模式缺点客户端客户端必须知道所有的策略类必须知道所有的策略类,并自行,并自行决定使用哪一个策略类决定使用哪一个策略类将造成系统将造成系统产生很多具体策略类产生很多具体策略类无法同时在客户端使用多个策略类无法同时在客户端使用多个策略类www.ChinaSA.info策略模式的优缺点与适用环境w模式适用环境一个系统需要一个系统需要动态地在几种算法中选择动态地在几种算法中选择一种一种避免使用难以维护的多重条件选择语句避免使用难以维护的多重条件选择语句不希望客户端知道复杂的、与算法相关不希望客户端知道复杂的、与算法相关的数据结构,的数据结构,提高算法的保密性与安全提高算法的保密性与安全性性www.ChinaSA.info思考w在策略模式中,一个环境类Context能否对应多个不同的策略等级结构?如何设计?www.ChinaSA.infoENDEND

    注意事项

    本文(C#设计模式-策略模式.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开