`

负责任的设计对象

阅读更多
1. 信息专家(Information Expert)
如果某个类能够在某方面具有完整的信息,足以实现某个责任,就将这个责任分配给这个类,这个类即所谓的信息专家。
2. 创造者(Creator)     
应用情况符合以下条件之一,类A应该具有创建类B的责任:
  (1) A是B的聚合
  (2) A是B的容器
  (3) A有初始化B的数据
       (4) A记录B的实例
       (5) A频繁使用B
3. 低耦合(Low Coupling)     
下类情况A,B两个类产生耦合:
  (1) A具有一个B的属性
  (2) A调用B对象的方法
  (3) A的方法包括对B的引用,例如返回的是B类型或参数是B类型
       (4) A是B的子类,或者A是B的实现类
不对陌生人说话(Don’t Talk to Strangers)原则:
  不要相连不需要通信的两个对象,不要做无为的耦合
拇指规则二条:
  (1) 如果A已经与B有连接,如分配责任A给B不合适(违反信息专家模式),那么分配责任B给A。
  (2) 两个模块中的内部类间连接是一个大错误
4. 高内聚(High Cohension)     
高内聚是指,我们要努力分解类,使得分解出来的类具有独立的责任。

低内聚是指,一个类单独处理很多不同模块的事务。如即处理数据存取功能,又处理用户接口操作或图形处理。
5. 控制器(Controller)     
人们通常将接收和处理系统事件的职责分配给以下类:
  (1) 能全面代表系统、设备或者子系统的类
  (2) 可以代表系统事件发生时用例发生情景的类
  (3) 代表某些卷入真实世界应用中的活动的类(例如人物角色控制器类)

以上这些类就是控制器类。不要将这些责任分配给用户界面类。
6. 多态(Polymorphism)     
当相关的行为只是由于种类不同时,可以分配相关的责任给指定的种类。多态可以使设计的内聚提高。
7. 纯虚构(Pure Fabrication)     
高内聚与低耦合是相互矛盾的,因为高内聚意味类的数量增多,对象间要合作完成任务,它们之间的连接就要增加,使得耦合提高。要解决这个问题,可以应用纯虚构模式。
8. 间接(Indirection)     
要避免对象间直接耦合,可以将协调组件或服务的职责分配给中间对象,这个中间对象称为间接或中介对象。
9. 受保护变化(Protected Variations)     
找出预计有变化或不稳定的点,我们有责任为这些变化的点创建稳定的接口。

  受保护变化也可理解为开闭原则(the Open Closed Principle, OCP),一个软件实体应当对扩展开放,对修改关闭。
分享到:
评论

相关推荐

    深入浅出设计模式(中文版)

    在第2章中,我们看到了GRASP模式的具体实现,它通过一系列原则帮助我们负责任地设计对象。例如,信息专家模式强调应将任务委托给拥有执行该任务所需信息的对象;而低耦合模式则指出应该减少对象间的依赖性,以降低...

    设计模式简介

    2. 负责任地设计对象——GRASP 在面向对象设计中,责任是类的核心,包括知道责任(了解信息)和行为责任(执行操作)。GRASP原则强调将责任分配给最适合执行它的对象,例如: 1. Information Expert:责任应交给拥有...

    信息系统分析与设计 王晓敏编著

    《信息系统分析与设计》是由王晓敏编著,属于清华大学出版社出版的高等学校电子信息类规划教材。本书主要围绕信息系统的基础理论、开发技术、建设过程以及相关...这也体现了编著者对学术严谨和对知识传播负责任的态度。

    《Python程序设计》课程标准.pdf

    1. 培养负责任、细心的工作态度和团队合作精神。 2. 提升与用户沟通,提取需求的能力。 3. 强调技术标准、操作规范、服务质量和知识产权意识。 4. 学习搭建Python软件硬件开发环境。 5. 提高代码理解能力,能读懂已...

    我的西电CS C++面向对象程序设计课程笔记.zip

    项目工程资源经过严格测试可直接...2. 部分字体及插图等来自网络,若是侵权请联系删除,本人不对所涉及的版权问题或内容负法律责任。收取的费用仅用于整理和收集资料耗费时间的酬劳 3. 积分资源不提供使用问题指导/解答

    第八章-责任保险.pptx

    责任保险是一种特殊的保险类型,它以被保险人对第三方依法应负的赔偿责任为保障对象。这一保险形式的出现基于健全的民事法律制度,旨在帮助个人和企业减轻因意外事件导致的经济负担。责任保险的主要特征包括:以法律...

    如何在HMI上显示SIMOTION工艺对象的报警信息.pdf

    用户必须确保产品的正确使用,并负起在安全、专业使用、安装、操作和维护设备方面的责任。当使用这些应用示例时,用户应当意识到西门子不对超出责任条款范围的任何损坏或索赔承担责任,并且西门子保留随时修改这些...

    华南师范大学面向对象程序设计项目,基于Qt界面、可以生成数独,运算数独.zip

    项目工程资源经过严格测试可直接...2. 部分字体及插图等来自网络,若是侵权请联系删除,本人不对所涉及的版权问题或内容负法律责任。收取的费用仅用于整理和收集资料耗费时间的酬劳 3. 积分资源不提供使用问题指导/解答

    等级保护2.0云计算安全设计方法和案例详解.pdf

    模型通过不同颜色定义了云服务商和客户应负责任的部分,以及双方共同承担的责任部分。 在云计算与传统等保保护对象差异层面,云平台和云上系统保护对象与传统保护对象有所不同。云计算环境下保护对象包括物理和环境...

    软件设计师课后练习题注解

    第九章则关注软件行业的法律法规和伦理道德问题,包括知识产权、软件版权、数据保护法规以及职业操守等,这对于成为一名负责任的软件设计师非常重要。 通过这些章节的习题解答,备考者不仅可以巩固理论知识,还能...

    建筑工程法定代表人授权书、工程质量终身责任承诺书整理.pdf

    在该文件中,项目负责人承诺将严格按照国家法律法规和标准规范进行工程的建设、勘察、设计、施工或监理工作,并明确表示对工程在设计使用年限内的质量问题负有终身责任。承诺书中同样需要包括承诺人的个人信息,如...

    计算机安全与防护教学设计.pdf

    教学目标包括掌握计算机病毒的基本知识,理解网络安全防护措施,提升自主学习和信息处理能力,同时培养学生的道德规范意识,如负责任地使用信息技术和尊重软件的知识产权。 教学过程中,重点在于让学生认识到计算机...

    RBAC的权限设计模型

    What是权限针对的对象或资源(Resource、Class);How是具体的权限(Privilege,正向授权与负向授权)。 RBAC模型的主要特征有两个:第一,权限的变化相对较慢,降低了授权管理的复杂性和管理开销;第二,灵活地...

    深入浅出设计模式(中文版电子版)

    第2章负责任地设计对象——GRASP 9 2.1InformationExpert(信息专家) 11 2.2Creator(创造者) 13 2.3LowCoupling(低耦合) 14 2.4HighCohesion(高内聚) 15 2.5Controller(控制器) 17 2.6Polymorphism...

    设计开发评审报告(表格模板、DOC格式).doc

    12. **编制、审核、批准**:这三个字段代表了报告的生命周期,编制者是报告的作者,审核者对报告内容进行核查,批准者通常是高级管理层,他们对最终的报告内容和决策负有责任。 设计开发评审报告是企业管理中的重要...

    2018年英特尔杯大学生电子设计竞赛嵌入式系统专题邀请赛.pdf

    知识点1:英特尔杯大学生电子设计竞赛嵌入式系统专题邀请赛的参赛对象 * 参赛对象:普通高校全日制在校本科学生 * 参赛方式:队际形式参赛,自由命题,无封闭竞赛场所 知识点2:参赛作品的形式和要求 *参赛作品的...

    设计开发评审报告(DOC格式).doc

    项目负责人则对整个项目的成功负有直接责任,他们在评审过程中通常会提供详细的设计方案和开发进度报告。 三、设计/开发阶段 设计/开发阶段是评审的关键时期,因为在这个阶段,产品或服务的核心特性和功能正逐渐...

    担当有为主题活动策划方案书.doc

    通过“知责任”、“明责任”、“负责任”三个篇章,逐步深化对责任的认识,从理论到实践,从自我到他人,再到社会。 活动中引用了英国王子查尔斯的名言,强调责任的必要性,同时列举了公交车司机黄志全的例子,展示...

    设计开发评审报告.doc

    4. **项目负责人**:负责人是项目执行和决策的关键人物,他们对项目的成功负有主要责任,并参与评审过程以确保设计和开发的方向正确。 5. **设计/开发阶段**:评审发生在不同的开发阶段,如需求分析、概要设计、...

    系统设计任务书.doc

    负责人是指对特定模块或任务负有直接责任的团队成员。他们需要确保其负责的部分按时按质完成。 11. **制定者、批准者和日期**: 这些信息记录了系统设计任务书的创建和审批流程,确保文档的权威性和合规性。制定...

Global site tag (gtag.js) - Google Analytics