第八讲设计模式内容摘要:
10%的折扣,后期可能会对超出 200元的销售给予 10%的折扣,并且还会存在其他大量变化。 我们如何对这些各种各样的定价算法进行设计。 策略( GoF) 名称:策略( Strategy) 问题:如何设计变化但相关的算法或政策。 如何设计才能是这些算法或政策具有可变更的能力。 解决方案(建议):在单独的类中分别定义每种算法 /政策 /策略,并且使其具有共同接口。 策略( GoF) 定价策略类 策略( GoF) 协作中的策略 策略( GoF) 语境对象需要其策略的属性可视性 使用工厂创建策略 创建策略 工厂 总结 对于动态变化的定价策略的防止变异可以通过策略和工厂模式实现。 建立在多态和接口基础上的策略可以实现具有可插拔的对象设计 组合( Composite) GoF 问题:我们如何来处理多个互相冲突的定价策略。 例如商店在今天(星期一)有效的政策有: 对老年人有 20%的折扣政策 对于购物金额满 400元的优先客户给予折 15%的折扣 在星期一,购物金额满 500美元享受 50元的折扣 买一罐咖啡,则所有购物物品都享受 15%的折扣 假设一个老年人同时也是优先客户,他买了一罐咖啡和600元的物品。 此时应该适用哪个定价政策。 组合( GoF ) 名称:组合( Composite) 问题:如何能够像处理非组合(原子)对象一样,(多态地)处理一组对象或具有组合结构的对象呢。 解决方案(建议):定义组合和原子对象的类,使它们实现相同的接口 组合( GoF ) 示例 组合模式 组合( GoF ) 示例 与组合的协作 创建多个 SalePricingStrategies 使用组合模式,我们使一组多个(有冲突)的定价策略对于 Sale对象来说与单个定价策略一样。 包含该组的组合对象也实现了 ISalePricingStrategy接口。 对于该设计问题更具有挑战性(并且更有趣)的部分是:我们什么时候创建这些策略。 创建多个 SalePricingStrategies 良好的设计应该在开始时为商店创建一个包含当前所有折扣政策(如果没有有效折扣,可以设为 0%)的组合,例如某个PercentageDiscountPricingStrategy。 然后,如果在该场景的下一步中,发现还需要应用另一个定价策略(例如老年人折扣),此时通过使用继承来的 ,能够轻松地在组合中增加这一策略。 在该场景中,可能有三个地方需要在组合中增加策略: 商店当前定义的折扣,在创建销售时增加 顾客类型折扣,在 POS获知顾客类型时增加 产品类型折扣(如果购买一罐咖啡,则所有购物物品都享受 15%的折扣),在向销售输入该产品条目时增加 创建多个 SalePricingStrategies 创建组合策略 第二种顾客类型折扣 为客户折扣创建定价策略(第一部分) 为客户折扣创建定价策略(第二部分) 外观( Fa231。 ade) GoF 问题: 假设创建新销售时,可能要识别该销售是否以礼券方式进行支付(这是可能并且普遍的做法)。 然后,商店可能会规定如果使用礼券只可以购买一件商品。 此时, enterItem在完成第一次操作后应该变为无效。 如果销售使用礼券支付,在对该顾客找零时,除了礼券之外所有其他支付类型的找零都应该置为无效。 例如,如果收银员请求现金找零或更新顾客在其商店帐户上的积分时,这些请求都应该被判断为无效。 假设创建新销售时,可以识别其为慈善捐助(从商店到慈善机构)。 商店可能会规定每次输入的条目价值只能低于 250元,并且只有当前登录者为经理时才允许对该销售添加条目。 外观( GoF) 名称:外观( Fa231。 ade) 问题:对一组完全不同的实现或接口(例如子系统中的实现和接口)需要公共统一的接口。 可能会与子系统内部的大量事物产生耦合,或者子系统的实现可能会改变。 怎么办。 解决方案(建议):对子系统定义唯一的接触点 — 使用外观对象封装子系统。 该外观对象提供了唯一和统一的接口,并负责与子系统构件进行协作 外观( GoF) 具有外观的 UML包图 外观 总结 外观模式很简单并且应用广泛。 它将子系统隐藏在一个对象之后。 外观通常通过单例。第八讲设计模式
相关推荐
贵的文化遗产 ,而且流传国外 , 受到各国人民的喜爱 , 他的诗作先后被译成多国文字。 楚辞是屈原汲南方民歌之精华,采楚国方言,创造了一种新体诗歌, 创作出了 《 离骚 》 .《 九歌 》等名篇 . 《 离骚 》 是一篇优秀的抒情长诗。 它以丰富的想象,真挚的感情,表达了诗人对理想和真理的执著追求,对楚国和人民的深切爱恋。 “ 虽九死其犹未悔 ” ,决不与那帮小人同流合污。
标便可以画出三角形的第一条边, 依次在顶点处单击,就可以画出三角形的房顶。 如果想画一个粗线条的三角形,可以先单击 “ 线条 ” 按 , 这时在 “ 状态框 ” 就会列出对应的多种粗细规格,选择合适 的线型,再单击 “ 多边形 ” 按钮 ,就可以画出粗线条的三 角形。 如图所示 三 角 形 房 顶 和 线 条 类 型 画出房子的墙面、门和窗户。 选择工具箱中的“矩形”按钮
化建设。 中国各族人民将继续在中国共产党领导下,在马克思列宁主义、毛泽东思想、邓小平理论和“三个代表”重要思想指引下, …… 把我国建设成为富强、民主、文明的社会主义国家。 ” 问题一:如何理解民主法治观念。 三、社会主义民主法治观念 社会主义民主法治是社会主义的重要特征。 :“为了实现社会主义现代化,必须发扬社会主义民主和加强社会主义法制” 三、社会主义民主法治观念
高中共青团工作 二 、 高中共青团主要工作 • 组织建设方面 • 办好团校。 一是学习中国共青团的历史 , 是学员们了解共青团对于党的重要作用 , 了解团是党的助手和后备军;二是学习团的基本知识 , 了解团的性质 , 基本任务 , 组织原则和作用。 让学员们明白团员的义务和权利 , 团的组织制度 , 加强对团组织的宣传工作 , 启发他们积极向团组织靠拢。 • 开展推优入党工作。 “ 推优入党 ”