网站大量收购独家精品文档,联系QQ:2885784924

8 设计模式2Strategy, Bridge模式.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8 设计模式2Strategy, Bridge模式

* UML和设计模式 UML和设计模式 UML和设计模式 UML和设计模式 权 巍 主要内容 8.1 Strategy模式 8.2 Bridge模式 8.3 “开-闭”原则 8.4 组合/聚合复用原则 * UML和设计模式 8.1 Strategy(策略)模式 UML和设计模式 * 网上商城购物车系统的例子 计算购物车中所有商品的总金额、运费。 而商城经常促销,不同的商品有不同的折扣。 怎样计算? 用if、switch等条件语句,根据不同情况用不同算法计算; 继承,在子类里面实现不同的行为; 8.1.1 什么是Strategy模式 Strategy模式又称Policy模式,它定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。该模式使算法可以独立于使用它的客户而变化。 UML和设计模式 * 8.1.2 策略模式中的角色 环境(Context) 持有一个Strategy类的引用。可定义一个接口让Strategy访问它的数据。 抽象策略(Strategy) 给出所有的具体策略类所需的接口,通常由一个接口或抽象类实现。 具体策略(ContreteStrategy) 包装了相关的算法或行为,实现Strategy接口的某个具体类。 UML和设计模式 * UML和设计模式 * Context 示意代码: public class Context { private Strategy strategy; public void contextInterface() { strategy.strategyInterface(); } } UML和设计模式 * Strategy示意代码: abstract public class Strategy { public abstract void strategyInterface(); } ContreteStrategy示意代码: public class ConcreteStrategy extends Strategy { public void strategyInterface() { //算法实现代码 } } 8.1.3 策略模式的代码示例 某网上商城举行促销活动:图书每本折扣1元,服装类8折,家居类9折,护肤品没折扣。 顾客结算时,计算购物车中所有商品的总金额。 UML和设计模式 * 8.1.3 策略模式的代码示例 UML和设计模式 * 例子的策略模式示意代码 DiscountStrategy代码: NoDiscountStrategy代码: FlatRateStrategy代码: PercentageStrategy代码: Context代码: Client代码: UML和设计模式 * 练习 要设计一个系统,对输入的数据实现排序,系统提供几种排序方法。系统运行时根据用户选择的排序方法对数据进行排序。(另外,可能会常常增加新的排序算法、或删除某个算法) UML和设计模式 * 8.2 Bridge(桥接)模式 UML和设计模式 * 开发游戏软件的例子 需要开发一款太空大战游戏,该游戏可安装在PC或手机上,不同平台上游戏的功能完全相同,并且有多种型号的太空船可供用户选择。 存在的问题 在PC和手机上的图形绘制、声效、游戏操作等方面的实现不同。 经常需要增加新型的太空船。 实现方案一: UML和设计模式 * UML和设计模式 * 示意代码 //抽象飞船基类 public abstract class SpaceShip{ public abstract shot(); public abstract run(); //... } //各种型号飞船 public abstract class SpaceShipT20 extends SpaceShip{...} public abstract class SpaceShipT30 extends SpaceShip{...} public abstract class SpaceShipT50 extends SpaceShip{...} //不同平台飞船 public class PCSpaceShip extends SpaceShip{...} public class MobileSpaceShip extends SpaceShip{...} 8.2.1 什么是Bridge模式 Bridge模式将抽象和实现分离,使它们都可以独立的变化。 Bridge模式是一种结构型模式,使用对象间的组合关系解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。 一般应用在“两个非常强的变化维度”,有时候即使有两个变化的维度,但是某个方

文档评论(0)

173****7830 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档