面向对象分析与设计(6)-GRASP原则.ppt

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

面向对象分析与设计GRASP设计原则什么是设计类?设计类是已经完成了规格说明并且达到能够被实现程度的类。设计类的来源通过分析类的精化得到的问题域,这里的精化包括添加实现细节解域-它是实用类库和诸如TIME、DATE、STRING等可复用组件的领域好的设计与差的设计一个面向对象的系统是由多个对象组成的系统,这些对象能够向其它对象发送消息来完成操作差的设计选择会导致系统和系统的构件比较脆弱和难以维护、理解、重用和扩展。要熟练地实现一个系统,在设计这个系统时运用面向对象的主要设计原则是实现该系统的基础设计应完成的工作在设计中,必须准确地说明类是如何履行它们的职责。必须完成以下事情:完整的属性集合,包括详细说明的名称、类型、可视性和一些默认值(可选的)将分析类指定的操作转化成一个或多个方法的完整集合。GRASP模式GRASP(GeneralResponsibilityAssignmentSoftwarePattern)通用职责分配软件模式描述了将职责分配给对象的基本原则五种基本GRASP模式专家(EXPERT)创建者(CREATOR)高内聚(HIGHCOHESION)低耦合(LOWCOUPLING)控制者(CONTROLLER)GRASP模式-专家问题:在面向对象的设计中什么是最基本的职责分配原则?解决方案:将职责分配给拥有履行一个职责所必需信息的类-即信息专家。(也就是将职责分配给一个类,这个类必须拥有履行这个职责所需要的信息。)GRASP模式-专家(举例)GRASP模式-专家(举例)GRASP模式-专家(续)信息专家模式核心思想:把职责分配给具有完成某项职责所需信息的个体.信息专家模式在职责分配中使用得非常广泛,它是对象设计中经常使用的基本指导原则.职责的履行需要信息,而信息往往分布在不同的对象中.这就意味着许多“部分”的信息专家有时需要协作才能来完成一个任务GRASP模式-专家(优点)因为对象使用自己的信息来实现服务,所以信息的封装性得以维持.低耦合/健壮性/易维护性.行为分散在不同的类中,这些类各自具有完成行为所需要的信息.这些“轻量级”的类易于理解和维护.GRASP模式-创建者问题:谁应该负责产生类的实例解决方案:类B聚合类A的对象。类B包含类A的对象。类B记录类A对象的实例。类B密切使用类A的对象。类B初始化数据并在创建类A的实例时传递给类A(类B是创建类A实例的一个专家)。GRASP模式-创建者(举例)GRASP模式-创建者(续)创建者模式指导怎样分配“与创建对象”相关的职责。创建者模式的基本目的是找到一个在任何情况下都与被创建对象相关联的创建者,选择这样的类作为创建者能支持低耦合。集合聚集了部分,容器包含了内容,记录器记录了被记录的数据,这些类之间的关系在类图中非常普遍.CreatorPattern建议:封装的容器类和记录器类是创建“自己包含或者记录的元素”的很好候选者.GRASP模式-创建者(优点)支持低耦合,这种设计意味着具有更低的维护依赖性和更高的重用机会.创建者模式之所以可能不增加耦合性是由于被创建类对于创建类而言已经可见了,正是因为已存在的关联使得它成为创建者.GRASP模式-低耦合模式问题:如何支持低依赖性以及增加重用性?解决方案:分配职责时使(不必要的)耦合保持为最低。GRASP模式-低耦合模式(续)耦合:是一个类与其它类关联、知道其它类的信息或者依赖其它类的强弱程度的度量一个具有高耦合度的类有如下问题:其它类的改变会迫使这个类改变其自身的局部定义难以孤立的理解它难以重用GRASP模式-低耦合模式(举例)考虑在销售点终端系统中,假设要创建一个Payment的实例并使它和Sale之间的实例关联,哪个类应当承担职责呢?在真实世界中POST记录了一个Payment的实例,根据创建者模式,POST类应该是创建Payment的候选类。GRASP模式-低耦合模式(举例)方案一:一个Register发送一个addPayment消息给Sale实例,并将新生成的Payment实例作为一个参数传递给Sale。Register需要知道Payment类的消息,两者被耦合。GRASP模式-低耦合模式(举例)方案2:一个Sale实例最终要和一个Payment实例耦合起来。因此Payment由Sale创建,没有增加耦合度,所以整体耦合度低。GRASP模式-低耦合模式(总结)低耦合是一个设计目标,也是一个评估原则;低耦合模式鼓励职责分配时不增加耦合性.从而避免了高耦合可能产生的不良后果;低耦合模式的极端情况就是类之间没有耦合.优点:不受其它组件

文档评论(0)

优美的文学 + 关注
实名认证
内容提供者

优美的文学优美的文学优美的文学优美的文学优美的文学

1亿VIP精品文档

相关文档