uml07(下半节)汇编.ppt

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

-*- NULL Object模式 Employee e=DB.getEmployee(“Bob”); if (e!=null e.isTimeToPay(today)) e.pay(); Employee e=DB.getEmployee(“Bob”); if (e.isTimeToPay(today)) e.pay(); -*- 内容安排 从原则到模式 设计模式 GoF设计模式及应用 GRASP职责分配模式 模式与编程语言 模式与重构 -*- 职责 职责(Responsibility):一个类或类型的契约或者义务;它与对象在行为上的义务密切相关;可分为两类职责: “知道”型职责 知道自己的私有的、封装了的数据 知道与自己相关联的对象信息 知道自己派生出来或者计算出来的事物 “做”型职责 自己完成某件任务 发起其他对象执行动作 控制和协调其他对象内的活动 -*- 职责和方法 方法实现职责 -*- GRASP GRASP(General Responsibility Assignment Software Pattern,通用职责分配软件模式) GRASP模式描述了将职责分配给对象的基本原则,这些原则被表示成模式 专家(Expert)、创建者(Creator)、高内聚(High Cohesion)、低耦合(Low Coupling)、控制者(Controller) 多态( Polymorphism)、纯虚构( Pure Fabrication)、中介者(Indirection)、不要和陌生人讲话(Protected Variations) -*- GRASP:Expert模式 目的:将一个职责分配给信息专家—掌握了为履行职责所必需的信息的类 专家模式在职责分配中的应用比任何其他模式的应用都要广泛,它是面向对象的设计中的一个基本指导原则 专家不是一个含糊的或者新奇的概念,它表达出最普遍的一种“直觉”,即对象所能完成的工作要依赖于它所掌握的信息 优点: 封装能够得以维持,因为对象只使用他们自己包含的信息来完成任务(封装支持低耦合) 系统行为只分布在具有所需信息的类中(类具有高聚合度) 别名: 把责任交给数据;谁知道谁来干;拟人化;自己做… -*- 示例:GRASP模式应用 * 极限编程实践: 1.客户作为团队成员(customer team member) 2.用户故事(use stories) 3. 短交互周期(short cycles) 4. 验收测试(acceptance tests) 5. 结对编程(pair programming) 6. 测试驱动的开发方法(test-driven development) 7.集体所有权(collective ownership) 8.持续集成(continuous integration) 9.可持续的开发速度(sustainable pace) 10.开放的工作空间(open workspace) 11.计划游戏(the planning game) 12.简单设计(simple design) 13.重构(refactoring) 14.隐喻(metaphor ) -*- 可复用的Button Button key9 = new Button(“9”); Button keyDial = dialKeySingleton(); Button keyPower = powerKeySingleton();-*- “拨电话” 的协作图 -*- 观察静态结构(类图) -*- 根据类图试写Button代码 public class Button { private Dialer myDialer; public Button(Dialer dialer) { myDialer = dialer; } public buttonPressed(String token) throws NumberFormatException { int digit = Integer.parseInt(token); dialer.digit(digit); } } Button与Dialer之间出现耦合,从而破坏了Button的可复用性 我们考虑增加一个间接层来解决? -*- 添加一个间接层? 添加一个怎样的类? 两个关系是怎样的? X ? ? -*- 改进设计—Active Server模式 面向对象设计对付类耦合的基本对策是:将两个类之间的关联转变为一个类与一个接口之间的关联,或者两个接口之间的关联 -*- 新的问题? interface ButtonListene

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档