




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GRASP 基于职责设计对象 2 简介 决定方法归属于哪个对象和对象之间如何交互 其意义重大 应谨慎从事 掌握OOD涉及一套柔性原则 自由度很大 这正是OOD的复杂所在 3 UML与设计原则 最关键的软件开发工具是受过良好设计原则训练的思维 4 对象设计 设计的输入 5 对象设计 对象设计中的活动确定设计方式建立动态模型 交互图 和静态模型 类图 应用设计模式其它 UI和数据库设计等输出交互图 类图和包图UI的草图和原型数据库模型报表的草图和原型 6 职责和职责驱动设计 RDD 职责 Responsibility 类元的契约或义务 方法 Method 用来实现 履行 职责 一个职责可能要许多类和方法 method 来实现 也可能只要很少方法来实现 这是由职责的粒度 granularity 来决定的 思考软件对象设计以及大型构件的流行方式是 考虑其职责 角色和协作 这些被称为职责驱动设计的大型方法的一部分 对象职责 其所作所为的抽象 7 职责和职责驱动设计 RDD 对象的职责分为以下两种类型 认知 职责 knowing 知道 私有的封装数据 知道 相关联的对象 知道 能够派生或计算出的事物 行为 职责 doing 做 自身的一些事情 如创建一个对象或进行一次计算 做 其它对象的初始化操作 控制和协调其它对象的活动 提问 1 Sale负责创建SalesLineItems 2 Sale负责认知其总额 8 职责和职责驱动设计 RDD 准则 领域模型通常产生与 认知 相关职责 例如 如果领域模型的Sale类具有time属性 那么根据低表示差异 软件的Sale类应该知道其产生的时间 职责的粒度职责的粒度会影响职责到类和方法的转换 大粒度职责具有数百个和方法 小粒度职责可能只是一个方法 例如 提供访问关系数据库 的职责可能涉及一个子系统中的200个类和数千个方法 创建Sale 职责可能仅涉及一个类中的一个方法 9 GRASP 基本OO设计的系统方法 GRASP GeneralResponsibilityAssignmentSoftwarePatterns 通用职责分配软件模式 核心思想 职责分配 即ResponsibilityAssignment GRASP提出了几个基本原则 用来解决面向对象设计的一些问题 GRASP 使用职责进行OO设计的学习工具GoF GangofFour 设计模式是针对特定问题而提出的解决方法GRASP则是站在面向对象设计的角度 告诉我们怎么样设计问题空间中的类与它们的行为责任 以及明确类之间的相互关系等等 GRASP可以说是GoF等设计模式的基础 10 职责 GRASP和UML图之间的关系 11 什么是设计模式 GRASP9个基本的OO设计原则或primitivebuildingblockOneperson spatternisanotherperson sprimitivebuildingblock 模式是对问题和解决方案的已命名描述 模式名 信息专家 InformationExpert 问题 为了获取某些信息 分配职责给对象的基本原则是什么 解决方案 将职责分配给信息专家 含有满足职责所需信息的类 12 GRASP简短示例 涉及9个Pattern中的5个Creator 创建者 InformationExpert 信息专家 LowCoupling 低耦合 Controller 控制器 HighCohesion 高内聚 13 创建者 Creator 模式 Problem WhocreatestheSquareobject 模式名 创建者问题 谁创建了A 解决方案 可被视作建议 如果以下条件之一成立 则可以将创建类A实例的职责分配给类B B包含了A对象 B组成聚集了A B记录了A B紧密地使用A B具有A的初始化数据注 B和A指的是软件对象 而不是领域模型对象 14 Creator 15 在动态和静态模型中应用创建者模式 16 信息专家 InformationExpert 模式 Problem WhoknowsaboutaSquareobject givenakey 模式名 信息专家 或专家 问题 给对象分配职责的基本原则是什么 解决方案 建议 将职责分配给具有完成该职责所需信息的那个类 17 InformationExpert whyExpertisauseful LowCoupling 18 LowCoupling Question WhyBoardoverDog 模式名 低耦合问题 如何减少因变化产生的影响 解决方案 建议 分配职责以使 不必要的 耦合保持在较低的水平 使用该原则对可选方案进行评估 19 LowCoupling KeyPoint ExpertSupportsLowCoupling 20 Controller MVS原则 21 Controller 22 Controller 模式名 控制器问题 在UI层之上首先接收和协调 控制 系统操作的对象是什么 解决方案 将接收或处理系统事件消息的职责分派给代表下列事务的类 代表全部 系统 或 根对象 如MonopolyGame对象代表运行软件的设备 如Phone BankCashMachine代表用例或会话出现 通常命名为Handler Session 如 PlayMonopolyGameHandler 23 Controller 24 HighCohesion 25 HighCohesion 模式名 高内聚问题 怎样使对象保持有内聚 可理解和可管理 同时具有支持低耦合的附加作用 解决方案 职责分配应保持高内聚 依此来评估备选方案 在对象设计中应用GRASP Creator 谁创建它 27 28 InformationExpert 谁负责得到销售总额 29 谁负责小计 30 谁回答价格 31 32 InformationExpert 讨论itisabasicguidingprincipleusedcontinuouslyinobjectdesignthefulfillmentofaresponsibilityoftenrequiresinformationthatisspreadacrossdifferentclassesofobjects DIY禁忌becauseofproblemsincouplingandcohesionForexample whoshouldberesponsibleforsavingaSaleinadatabase 33 InformationExpert 优点Informationencapsulationismaintainedsinceobjectsusetheirowninformationtofulfilltasks usuallysupportslowcouplingBehaviorisdistributedacrosstheclassesthathavetherequiredinformation Highcohesionisusuallysupported 34 LowCoupling 谁负责创建它并与Sale关联 35 现实世界Register记录了Payment 36 37 LowCoupling 讨论低耦合是在制定设计决策期间必须牢记的原则耦合的种类TypeXhasanattributethatreferstoaTypeYinstanceATypeXobjectcallsonservicesofaTypeYobject TypeXhasamethodthatreferencesaninstanceofTypeYTypeXisadirectorindirectsubclassofTypeYTypeYisaninterface andTypeXimplementsthatinterface适度耦合高耦合对稳定和普遍使用的元素而言并不是问题 38 Controller 39 Controller AcontrolleristhefirstobjectbeyondtheUIlayerthatisresponsibleforreceivingorhandlingasystemoperationmessage 解决方案Representstheoverall system a rootobject adevicethatthesoftwareisrunningwithin oramajorsubsystemtheseareallvariationsofafacadecontroller RepresentsausecasescenariowithinwhichthesystemeventoccursCoordinatorSession 40 Controller 41 Controller 42 Controller 讨论保证了UI不包括应用逻辑Normally acontrollershoulddelegatetootherobjectstheworkthatneedstobedone itcoordinatesorcontrolstheactivity Itdoesnotdomuchworkitself 43 Controller ImplementationwithJavaSwing RichClientUI 44 Controller ImplementationwithJavaSwing RichClientUI 45 Controller 问题与解决方案bloatedcontrollerThereisonlyasinglecontrollerclassreceivingallsystemeventsinthesystem andtherearemanyofthem Thecontrolleritselfperformsmanyofthetasksnecessarytofulfillthesystemevent withoutdelegatingthework Acontrollerhasmanyattr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2-Azidoethanol-d4-生命科学试剂-MCE
- 人力资源专家必 备:全面时代面试题解读人力资源面试策略
- 养护院门卫安全知识培训课件
- 腾讯公司职位攻略:常见面试题及答案解析
- 养护机械安全知识培训课件
- 光降解塑料课件
- 职业规划与高龄求职:大龄就业面试题及答案指南解读
- 职场发展新趋势:智联招聘面试题引领职业方向转变
- 面试必杀技:漫画钓鱼面试题实战演练
- 珍惜生命的发言稿
- 食品委托加工协议书范文6篇
- 院感知识竞赛备考试题库(附答案)
- 六安2024九中小升初数学试卷
- 2025年黑龙江省哈尔滨市南岗区事业单位招聘考试卫生类医学检验专业知识试卷
- 人社法律法规知识竞赛考试题及答案
- 电工基础知识试题及答案
- 2025云南温泉山谷康养度假运营开发(集团)有限公司社会招聘19人笔试参考题库附带答案详解
- 2025年中国教育时政试题及答案
- NB/T 11636-2024煤矿用芳纶织物芯阻燃输送带
- 镀锌工安全教育培训手册
- 2025年辅警招考《公共基础知识》题库(含解答)
评论
0/150
提交评论