购买

¥14.0

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 24C#设计模式.策略模式

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

24C#设计模式.策略模式

用户5527213227
2019-03-20 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《24C#设计模式.策略模式ppt》,可适用于高等教育领域

DesignPatterns策略模式刘伟(Sunny)weiliuchinacom大纲策略模式概述策略模式的结构与实现策略模式的应用实例PetShop中的订单处理策略模式的优缺点与适用环境策略模式概述旅游出行方式示意图策略模式概述分析实现某个目标的途径不止一条可根据实际情况选择一条合适的途径软件开发:多种算法例如排序、查找、打折等使用硬编码(HardCoding)实现将导致系统违背开闭原则扩展性差且维护困难可以定义一些独立的类来封装不同的算法每一个类封装一种具体的算法策略类策略模式概述策略模式的定义对象行为型模式策略模式:定义一系列算法将每一个算法封装起来并让它们可以相互替换。策略模式让算法可以独立于使用它的客户变化。StrategyPattern:Defineafamilyofalgorithms,encapsulateeachone,andmaketheminterchangeableStrategyletsthealgorithmvaryindependentlyfromclientsthatuseit策略模式概述策略模式的定义又称为政策(Policy)模式每一个封装算法的类称之为策略(Strategy)类策略模式提供了一种可插入式(Pluggable)算法的实现方案策略模式的结构与实现策略模式的结构策略模式的结构与实现策略模式的结构策略模式包含以下个角色:Context(环境类)Strategy(抽象策略类)ConcreteStrategy(具体策略类)策略模式的结构与实现策略模式的实现典型的抽象策略类代码:abstractclassAbstractStrategy{publicabstractvoidAlgorithm()声明抽象算法}策略模式的结构与实现策略模式的实现典型的具体策略类代码:classConcreteStrategyA:AbstractStrategy{算法的具体实现publicoverridevoidAlgorithm(){算法A}}策略模式的结构与实现策略模式的实现典型的环境类代码:classContext{privateAbstractStrategystrategy维持一个对抽象策略类的引用publicvoidSetStrategy(AbstractStrategystrategy){thisstrategy=strategy}调用策略类中的算法publicvoidAlgorithm(){strategyAlgorithm()}}策略模式的结构与实现策略模式的实现典型的客户端代码片段:helliphellipContextcontext=newContext()AbstractStrategystrategystrategy=newConcreteStrategyA()可在运行时指定类型通过配置文件和反射机制实现contextSetStrategy(strategy)contextAlgorithm()helliphellip策略模式的应用实例实例说明某软件公司为某电影院开发了一套影院售票系统在该系统中需要为不同类型的用户提供不同的电影票打折方式具体打折方案如下:()学生凭学生证可享受票价折优惠。()年龄在周岁及以下的儿童可享受每张票减免元的优惠(原始票价需大于等于元)。()影院VIP用户除享受票价半价优惠外还可进行积分积分累计到一定额度可换取电影院赠送的奖品。该系统在将来可能还要根据需要引入新的打折方式。现使用策略模式设计该影院售票系统的打折方案。策略模式的应用实例实例类图电影票打折方案结构图策略模式的应用实例实例代码()MovieTicket:电影票类充当环境类()Discount:折扣类充当抽象策略类()StudentDiscount:学生票折扣类充当具体策略类()ChildrenDiscount:儿童票折扣类充当具体策略类()VIPDiscount:VIP会员票折扣类充当具体策略类()配置文件Appconfig()Program:客户端测试类参考代码(DesignPatternStrategySample)策略模式的应用实例结果及分析如果需要更换具体策略类无须修改源代码只需修改配置文件即可完全符合开闭原则xmlversion=encoding=configurationappSettingsaddkey=discountTypevalue=StrategySampleChildrenDiscountappSettingsconfigurationPetShop中的订单处理PetShop的BLL(BusinessLogicLayer业务逻辑层)子项目局部结构PetShop订单策略类结构图PetShop中的订单处理配置文件webconfig代码片段:helliphellipaddkey=OrderStrategyClassvalue=PetShopBLLOrderSynchronoushelliphellip策略模式的优缺点与适用环境模式优点提供了对开闭原则的完美支持用户可以在不修改原有系统的基础上选择算法或行为也可以灵活地增加新的算法或行为提供了管理相关的算法族的办法提供了一种可以替换继承关系的办法可以避免多重条件选择语句提供了一种算法的复用机制不同的环境类可以方便地复用策略类策略模式的优缺点与适用环境模式缺点客户端必须知道所有的策略类并自行决定使用哪一个策略类将造成系统产生很多具体策略类无法同时在客户端使用多个策略类策略模式的优缺点与适用环境模式适用环境一个系统需要动态地在几种算法中选择一种避免使用难以维护的多重条件选择语句不希望客户端知道复杂的、与算法相关的数据结构提高算法的保密性与安全性思考在策略模式中一个环境类Context能否对应多个不同的策略等级结构?如何设计?END

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/23

¥14.0

立即购买

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利