讲GRAS及P模式.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文档。上传文档
查看更多
讲GRAS及P模式

第三讲 GRASP模式 广州大学华软软件学院 软件工程系 卢青华 Email:lqh@ Tel:面向对象设计 面向对象设计 所谓面向对象设计,就是在系统设计的过程中,通过把系统分成相对独立但又相互联系的对象组合的一种设计方法。对象具有属性和行为,对象间通过消息进行交互(协作)。 面向对象一般有以下几个关键步骤: 1.发现对象。找出系统应该有哪些对象构成。 2.对象的属性。对象具有哪些属性。 3.对象的行为。对象具有哪些行为,或者说对象需要做什么,它的职责是什么。 4.对象的关系。对象与对象之间的关系是什么,怎样进行交互、协作等等。 GRASP模式概念 GRASP是General Responsibility Assignment Software Patterns(通用职责分配软件模式)的简称,它的核心思想“职责分配”,即Responsibility Assignment。 GRASP的主要特征: 对象职责分配的基本原则。 主要应用在分析和建模上。 GRASP的核心思想的理解: 自己干自己的事(职责的分配) 自己干自己的能干的事(职责的分配) 自己只干自己的事(职责的内聚) 也就是说,如何把现实世界的业务功能抽象成对象,如何决定一个系统有多少对象,每个对象都包括什么职责, GRASP 模式给出了最基本的指导原则。 GRASP基本原则 GRASP提出了九个基本原则,用来解决面向对象设计的一些问题。 信息专家(Information expert) 创建者(Creator) 高内聚(High Cohesion) 低耦合(Low Coupling) 控制者(Controller) 多态(Polymorphism) 纯虚构(Pure Fabrication) 间接性(Indirection) 变化预防(Protected Variations) 信息专家(Information expert) 将职责分配给具有履行职责所需要的信息的类 通俗点就是:该干嘛干嘛去,别管别人的闲事或者我的职责就是搞这个,别的事不管。 举个简单的例子,如果有一个类是专门处理字符串相关的类,那么这个类只能有字符串处理相关的方法,而不要将日期处理的方法加进来。也就是提高软件高内聚一种原则。 例子: 为了说明问题,我们使用“学生成绩管理系统” 来说明。 用例1: - 管理员创建题库(把题条加入题库) 再细化一下: - 管理员创建题库(把题条加入题库):如果题库中已经存在所给的题条,则退出,否则加入题条。 这样就存在3个对象:管理员用户User,题条SubjectItem,题库SubjectLibrary 2个职责:判断(新加入的题条是否与题库某题条相等),加入(题条的加入) 这2个职责究竟应该由哪个对象执行? 我们使用Information Expert模式来分析。 1. 判断2个题条是否相等,只要判断题条的ID属性(或其它属性)是否相等就可以了。题条的ID是属于题条的,所以对它的操作应该放在题条SubjectItem里。 2. 题条的加入需要操作的数据有2部分,一部分是新加入的题条本身,另一部分是题库(加入到题库),题条是题库的一部分,所以题条的加入应该放在题库SubjectLibrary里完成。 创建者(Creator) 将创建一个类A的实例的职责指派给类B的实例,如果下列条件满足的话: a) B聚合了A对象 b) B包含了A对象 c) B纪录了A对象的实例 d) B要经常使用A对象 e) 当A的实例被创建时,B具有要传递给A的初始化数据(也就是说B是创建A的实例这项任务的信息专家) f) B是A对象的创建者 如果以上条件中不止一条成立的话,那么最好让B聚集或包含A。 通俗点就是:我要用你所以我来创建你,请不要让别人创建你 这个模式是支持低耦合度原则的一个体现 例子: 例如 :因为订单 (Order) 是商品 (SKU) 的容器,所以应该由订单来创建商品。 如下图: ?????? 这里因为订单是商品的容器,也只有订单持有初始化商品的信息,所以这个耦合关系是正确的且没办法避免的,所以由订单来创建商品。 高内聚(High Cohesion) 分配一个职责的时候要保持类的高聚合度。 内聚度(cohesion)是一个类中的各个职责之间相关程度和集中程度的度量。一个具有高度相关职责的类并且这个类所能完成的工作量不是特别巨大,那么他就是具有高聚合度。 例子: 例如 :一个订单数据存取类 (OrderDAO) ,订单即可以保存为 Excel 模式,也可以保存到数据库中;那么,不同的职责最好由不同的类来实现,这样才是高内聚的设计,如下图: ?????? 这里我们把两种不同的数据存储功能分

文档评论(0)

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

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

1亿VIP精品文档

相关文档