二、四个基本要素.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二、四个基本要素

设计模式概述 主讲教师:周军海 E-mail:lucky2001ok@163.com 一、定义: 设计模式(Design?pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 二、四个基本要素 2.1?模式名称(pattern?name) 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。 命名一个新的模式增加了我们的设计词汇。 设计模式允许我们在较高的抽象层次上进行设计。 二、四个基本要素 2.2?问题(problem)? 描述了应该在何时使用模式。 2.3?解决方案(solution)? 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。 二、四个基本要素 2.4?效果(consequences)? 描述了模式应用的效果及使用模式应权衡的问题。 尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。 三、实例解析 通过一个实例来了解模式是如何运作 使用模式最好的方式是:“把模式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用它们。”以往是代码复用,现在是经验复用。 设计模式的用途与优点 一些关键的OO设计原则 实例解析-模拟鸭子 J o e 上班的公司做了一套相当成功的模拟鸭子游戏:SimUDuck。 QA 利用继承来提供D u c k的行为,这会导致下列哪些缺点? A. 代码在多个子类中重复。 B. 运行时的行为不容易改变。 C. 我们不能让鸭子跳舞。 D. 难以得知所有鸭子的全部行为。 E. 鸭子不能同时又飞又叫。 F. 改变会牵一发动全身,造成其他鸭子不想要的改变。 四、设计模式的组织编目 设计模式之间的关系 小结 设计模式的定义 设计模式的四要素 一些关键的OO设计原则 常用设计模式的编目 Q: 我是不是一定要先把系统做出来,再看看有哪些地方需要变化,然后才回头去把这些地方分离封装? Q: 上例中Duck是不是也该设计成一个接口? Q: 用一个类代表一个行为,感觉似乎有点奇怪。类不是应该代表某种“东西”吗?类不是应该同时具备状态“与”行为吗? 集成鸭子的行为 鸭子现在会将飞行和呱呱叫的动作,委托(delegate)别 人处理,而不是使用定义在自己类(或子类)内的方法。 ① 首先,在鸭子中加入两个实例变量, 分别为FlyBehavior 与QuackBehavior,声明为接口类型(而不是具体类实现类 型),每个变量会利用多态的方式在运行时引用正确的行 为类型(例如:FlyWithWings、Squeak . . . 等)。 我们也必须将Duck类与其所有子类中的fly() 与quack( ) 移 除,因为这些行为已经被搬移到FlyBehavior与 QuackBehavior类中了。 我们用performFly()和performQuack()取代Duck类中的 fly()与quack()。 现在,我们来实现performQuack(): public class Duck { QuackBehavior quackBehavior; // 还有更多 public void performQuack() { quackBehavior.quack(); } } 每只鸭子都引用实现QuackBehavior接口的对象。 鸭子将呱呱叫行为委托给quackBehavior引用的对象。 ③ 下面设定FlyBehavior和QuackBehavior的实例变量 (MallardDuck类为例)。 public class MallardDuck extends Duck { public MallardDuck() { quackBehavior = new Quack(); flyBehavior = new FlyWithWings(); } public void display() { System.out.println(Im a real Mallard duck); } } Quack类处理呱呱叫。 FlyWithWings作为FlyBehavior 类型。 MallardDuck从Duck 继承,具有flyBehavior 和quackBehavior 实例变量。 测试Duck代码 ① 输入下面的Duck类(Duck.java

文档评论(0)

2105194781 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档