GRASP-基于职责设计对象.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《GRASP-基于职责设计对象.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GRASP 基于 职责 设计 对象
- 资源描述:
-
1、第17章 GRASP:基于职责设计对象GRASP:Designing Objects with Responsibilities第1页,共48页。图17-1 制品关系(强调了对OO设计的影响第2页,共48页。职责和方法 UML定义职责定义职责(Responsibility)为为“类元的契约或义务。类元的契约或义务。方法方法(Method)用来实现(履行)职责。用来实现(履行)职责。一个职责可能要许多类和方法一个职责可能要许多类和方法(method)来实现,也可能只来实现,也可能只要很少方法来实现,这是由职责的粒度要很少方法来实现,这是由职责的粒度(granularity)来决定来决定的。的。第
2、3页,共48页。职责可分成两类:“认知认知”责(责(knowing)“行为行为”职责(职责(doing)“知道知道”私有的封装数据私有的封装数据“知道知道”相关联的对象相关联的对象“知道知道”能够派生或计算出的事物能够派生或计算出的事物“做做”自身的一些事情。如创建一个对象或进行一自身的一些事情。如创建一个对象或进行一次计算。次计算。“做做”其它对象的初始化操作。其它对象的初始化操作。控制和协调其它对象的活动。控制和协调其它对象的活动。第4页,共48页。职责和交互图图17-2 职责与方法是相关的在在UML制品制品(artifacts)中,通常是在建立交互图的语境来中,通常是在建立交互图的语境来
3、考虑对象的职责分配,通过方法来实现职责。考虑对象的职责分配,通过方法来实现职责。第5页,共48页。设计模式(Patterns)富有经验的面向对象技术专家(或其它软件开发人员)为解富有经验的面向对象技术专家(或其它软件开发人员)为解决某些问题而设计的解决方案,可作为通用原则决某些问题而设计的解决方案,可作为通用原则(General Principles)和惯用法和惯用法(Idioms),用于指导软件设计。,用于指导软件设计。如果将这些原则和惯用法以一种结构化的形式加以描述,如果将这些原则和惯用法以一种结构化的形式加以描述,给出问题和解决方案,然后起一个名字。这就是给出问题和解决方案,然后起一个名
4、字。这就是(Patterns)。例如:例如:模式名:信息专家(模式名:信息专家(Information ExpertInformation Expert)问题:为了获取某些信息,分配职责给对象的基本原则是什么?问题:为了获取某些信息,分配职责给对象的基本原则是什么?解决方案:将职责分配给信息专家解决方案:将职责分配给信息专家 -含有满足职责所需信息的类。含有满足职责所需信息的类。设计模式是一些针对特定问题的成功的解决方案设计模式是一些针对特定问题的成功的解决方案第6页,共48页。GoF关于设计模式的著作 英文版于1994年出版 这本书被认为是设计模式的“圣经”,它描述了23个OO设计模式 这本
5、书的作者有四人Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides,因此被称为GoF(Gang of Four,四人帮)设计模式 阅读该书要有一定的OO设计和编程知识(C+)学习GRASP和基本GoF模式是本课程的关键目标第7页,共48页。GRASP:分配职责通用原则的模式 作为设计模式来描述对象设计和职责分配的作为设计模式来描述对象设计和职责分配的基本原则。基本原则。GRASPGRASP模式:模式:创建者创建者(Creator)信息专家信息专家(Information Expert)低耦合低耦合(Low Coupling)控制器控制器(C
6、ontroller)高内聚高内聚(High Cohesion)eneral esponsibility ssignment oftware attern第8页,共48页。创建者(Creator)创建者创建者谁创建了谁创建了A A?如果以下条件之一成立,则如果以下条件之一成立,则可以将创建类可以将创建类A A实例的职责分配给类实例的职责分配给类B B。n B B包含了包含了A A对象;对象;B B组成聚集了组成聚集了A A;nB B记录了记录了A A;nB B紧密地使用紧密地使用A A;nB B具有具有A A的初始化数据的初始化数据第9页,共48页。问题:由谁创建Square对象图17-3 Mo
7、nopoly迭代1的领域模型第10页,共48页。图17-4 在动态模型中运用创建者模式图17-5 在设计模型的DCD中,Board与Square具有组成聚合关联。我们在静态模型中应用了创建者在动态和静态模型中应用创建者模式第11页,共48页。信息专家(Information Expert)信息专家(或专家)信息专家(或专家)给给对象分配职责的基本原则是什么?对象分配职责的基本原则是什么?将职责分配给具有完成该职责所需信息将职责分配给具有完成该职责所需信息的那个类的那个类第12页,共48页。问题:如果给定键值,谁知道Square对象的相关信息图17-6 应用专家模式第13页,共48页。低耦合(L
8、ow Coupling)低耦合低耦合如何减少因变化产生的影响?如何减少因变化产生的影响?分配职责以使分配职责以使(不必要的不必要的)耦合保持在较低耦合保持在较低的水平。使用该原则对可选方案进行评估的水平。使用该原则对可选方案进行评估第14页,共48页。图17-7 评介耦合对设计影响此方案中Dog与Board都必须知道Square,而上一方案只有Board知道Square,所以上一方案耦合度更低。第15页,共48页。为什么期望低耦合 因为低耦合往往能够减少修改软件所需的时间、工作量和缺陷。第16页,共48页。创建者模式与低耦合创建者模式支持低耦合度创建者模式支持低耦合度,意味着具有较低的依赖关系
9、和意味着具有较低的依赖关系和较高的重用机会。因为被创建的类很可能早已经对创建者较高的重用机会。因为被创建的类很可能早已经对创建者类可见(即在创建者类已有方法涉及被创建者类),耦合类可见(即在创建者类已有方法涉及被创建者类),耦合程度不会增加。程度不会增加。第17页,共48页。信息专家模式与低耦合 信息专家模式支持低耦合度。因为信息专家模式把职责分配给拥有完成职责所需信息的对象。如果我们把职责分配给其他对象,则信息需要被这些对象共享会增加耦合度。第18页,共48页。控制器(Controller)控制器控制器在在UIUI层之上首先接收和协调层之上首先接收和协调(控制控制)系统操作的对象是什么?系统
10、操作的对象是什么?将接收或处理系统事件消息的职责分派给代表下列事务将接收或处理系统事件消息的职责分派给代表下列事务的类:的类:n代表全部代表全部“系统系统”或或“根对象根对象”,如,如MonopolyGameMonopolyGame对象对象n代表运行软件的设备,如代表运行软件的设备,如PhonePhone,BankCashMachineBankCashMachinen代表用例或会话出现。通常命名为代表用例或会话出现。通常命名为 HandlerHandler,SessionSession。如,如,PlayMonopolyGameHandlerPlayMonopolyGameHandler。第19
11、页,共48页。问题:谁首先来处理playGame系统系统图17-8 Monopoly游戏的SSD。注意playGame操作第20页,共48页。根据模型与视图分离原则,UI对象不应当包括业务逻辑,应该把请求委派给领域层的对象。图17-9 谁是用于playGame系统操作的控制器第21页,共48页。如果只有少数几个系统操作,可以选择代表全部“系统”或“根对象”。图17-10 应用控制器模式-使用MomopolyGame。所UI层与软件对象的领域层连接起来 第22页,共48页。高内聚(High Cohesion)高内聚高内聚怎样使对象保持有内聚、可理解和可管理,同时怎样使对象保持有内聚、可理解和可管
展开阅读全文