- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7讲.模式与对象设计.ppt
第7讲. 模式与对象设计 曹健 上海交通大学 计算机科学与工程系 内容 责任分配 设计模式 GRASP模式 案例 1.1引言 我们已经创建了领域模型 确定有什么样的方法,属于谁,对象之间如何交互,这是开发面向对象系统的核心 但是如何做? GRASP模式是帮助我们理解详细的原则和所需要的思考方法的学习工具 这些模式与如何将责任分配给类相关 1.2责任和方法 责任:分类器的契约和责任 对象具有责任意味着: 自己做某些事情,例如创建一个对象或者进行一个计算 控制或者协调其它对象的活动 “一个sale对象负责创建SalesLineItems( a doing)” 要想知道一个对象的责任,需要: 知道私有的封装的数据 知道相关的对象 知道可以派生或者计算的对象 “一个sale对象需要负责knowing its total” 责任不等同于方法,但是方法是用来完成责任的 Sale 类可以定义一个或多个方法来计算总价 被命名为 getTotal的方法 或者发送getSubTotal 消息给每一个SalesLineItem 对象,来获取每一个类别的价格 1.3责任和交互图 责任可以通过编程实现 或者可以用过创建交互图来进行分配 2. 模式 2.1学习的模式 在我们人类社会中,许多方面的成功经验都可以归结为模式 事实上,教育的重要目标就是把学习的模式从一代传向下一代 下面,我们将探索如何依据模式来学习下棋 学习开发高质量的软件与学习下棋非常类似 虽然失败的后果通常没有那么戏剧性 2.2 成为下棋大师 首先学习规则和物理需求 例如,棋子的名字,合法的移动,棋盘的构成,等等 然后,学习原则 例如,每一个棋子的大小,如何将,如何吃子等等 但是,要成为高手,还必须从其它人的棋谱中学习 这些棋谱包含了许多必须理解,记忆和不断运用的模式 这种棋谱也是非常多的 2.3成为一个软件设计大师 首先学习规则 例如,算法,数据结构和软件语言 然后学习原则 例如,结构化编码,模块化编码,面向对象编码,遗传编码等等 但是, 为了真正掌握软件设计,还必须学习其它大师的设计 – 这些设计包含了必须理解,记忆和重复运用的模式 这种模式也是非常多的 2.4例子 模式名字: 信息专家(Information Expert) 解决方案: 将责任分配给拥有信息完成责任的类 解决的问题: 将责任分配给对象的基本原则是什么? 2.5优点 模式对专家的知识和设计中的优缺点进行了显示获取,并尽力使这种专家知识被广泛应用 模式可以改进开发者之间的沟通 –模式名字构成一个词汇集 模式有助于面向对象技术的推广 2.6注意点 不要把所有的东西都作为一个模式 – 开发战略性的领域模式,并重用现存的战术型模式 模式作者,应用开发者和领域专家之间的密切合作 在文档中清楚表明何时可以应用,何时不可以应用 3. GRASP 分配责任的通用原则模式 Patterns of General Principles in Assigning Responsibilities 3.1为什么是什么 为什么 在对象设计中,对责任的合理分配非常重要 对责任进行分配一般是在画交互图,在编码时创建 模式是一个命名的问题/求解对,它包含了好的建议和原则,这些与责任的分配相关 是什么 通用的责任分配软件模式(General Responsibility Assignment Software Patterns) 3.2五个重要模式 信息专家(Information Expert) 创建者(Creator) 高度内聚(High Cohesion) 低耦合(Low Coupling) 控制器(Controller) 3.3.1模式1: 信息专家 解决方案 将责任分配给信息专家,所谓的信息专家是拥有完成责任的信息的类 问题 设计模型可能定义成百上千个软件对象,一个应用中也可能需要将成百上千项责任进行分配 目的: 易于理解,维护,扩展和重用 例子 NextGEN POS 应用,某些类需要知道销售总额 谁负责知道销售总额? 拥有需要的信息的对象类确定总额 需要回答的问题 我们已经有领域模型了,但是我们依然没有设计模型 如果已经有设计模型,并且包含了相关的类,首先关注它们 否则,在领域模型中,分析如何依据领域模型中的表示来创建相应的设计类 部分领域模型 这些责任在画交互图时被考虑和确定 讨论 由于它们知道信息,所以对象必须做事情 当信息分布在不同的对象中,他们需要相互间通过消息进行交互以分担工作 在真实的世界中,对象可能没有生命的,但是在软件中,对象是“活着的”或者“有生命的”,因为它们将承担责任 禁忌 没有万能药 专家模式可能在某些情况中造成耦合和内聚 例如,将Sale保存在数据库 我们需要将与数据库处理相关的逻辑作
您可能关注的文档
最近下载
- 2025年新版医疗器械经营质量管理规范.pdf VIP
- 法汉互译理论与实践 全套课件.ppt
- 鲁教版九年级英语课文原文及翻译Unit1.pdf VIP
- 公司员工请假条模板.docx VIP
- TIAWBS007-2018 4H 碳化硅同质外延层厚度的红外反射测量方法.pdf VIP
- 最新2025年思政开学第一课全文.ppt VIP
- 预制立柱、盖梁起重吊装及安装专项施工方案.docx VIP
- 2024届高考一轮复习课件+第12讲+水循环、陆地水体及其相互关系(第2课时).pptx VIP
- 质量管理之CAPA课件.pptx VIP
- 初中英语课件unit 1 The-Johnson-Family.ppt VIP
文档评论(0)