新进一本书《对象设计:角色、责任和协作》,主讲面向对象的软件设计,很不错,正在看,现在记下一些笔记。
第一章:设计概念:
1·1
-----
这一节主要是讲软件是由对象所组成,而对象个体并不是单一的个体,而是对应相应角色,并与其它对象互动通信以达到软件运作的个体。另一个方面则是对象并不只是对现实世界的模拟,而对象的设计可以是对现实世界不存在的对象,比如说逻辑。
·“软件是由各部份组成,软件的各部份——软件对象——通过发送消息来完成信息和行为上的互动。”:如何发送消息呢?要发送消息,那么就要知道要向谁发送消息,那么如何得知别的对象的存在呢?我这样理解,一种是对象动态生成别的对象,别一种则是把别的对象告诉这个对象,而发送消息的方式就是对别的对象的方法进行调用,让别的对象去实施它的职责,以达到该对象所要完成的行为动作。这里的信息应该是触发信息,比如说一次动作请求,更为确切的就比如要查一个客户的资料,那么就会触发相关的对象进行互动,以得到相关的回答。
·“我们将真实世界中难以理解的对象分解为更小、更易于管理的软件对象,我们还可能创造出真实世界中不存在的新对象。……我们衡量成功的标准确无误是软件满足应用需求的程度,而不是对现实世界的模拟度。”:系统是由众多小对象组成的,那么我们就要分析系统,到底是由哪些对象组成,并且规定这些对象的职责和功能。那么对象就必须是现实世界必然存在的吗?不一定,最简单的数据库存取,我们为了规范化存取过程,我们会设计一个DAO对象,为了显示数据,我们可能要设计一个专门处理显示的对象,而这些都是现实中不存在的。然对象的设计并不是对现实世界的完全模拟,而是针对需求进针对性的模拟,不必要模拟往往会增加系统的复杂性,以至项目最终失败。
·“由于对象具有机械行为,并且能够插接在一起相互工作,因此它们能够组成非常复杂的机器。为了管理这种复杂性,我们将系统行为指派到具有特定角色的对象中。”:亦即把职责和功能分派到各个对象,以简化复杂性。其实按照我的理解,这个设计的过程就是一个更为复杂的过程,相对来说复杂性并没有得到简化。
·
应用系统 = 一组相互作用的对象
对象 = 一个或多个角色的实现
角色 = 一组相关的责任
责任 = 执行一项任务或掌握某种信息的义务
协作 = 对象或角色(或两者)之间的互动
契约 = 描述协作提纲的一种协定
这里对角色和对象有点不明,如若没有学过设计模式的人,会很轻易的认为角色是“类”,而对象就是类的一个实例而已。但是如若有学过设计模式,那么我们就有另一种看法,这里,角色规定的是一组责任,而这里的对象是这个责任的一种实现,而且一个角色可以用多种实现的对象,我们这样看,我们定义了一个接口,指定了要完成这个接口指定责任集的类,那么这些类就是前面所说的对象,这是面向接口编程的要义。那么这本书这里所说的是前面一种情况呢还是后面这种情况呢?不得而知。
---
学习是一种快乐,而且这本书里有很多我一直寻求的正解,希望能解开一直以来的迷惑。
分享到:
相关推荐
作者Rebecca wirfs Brock和Alan McKean在书中讨论了基于责任驱动这一概念框架之下的用户需求 系统架构和设计模式如何共同作用 从而设计出一个有效的对象模型 书中引入了大量词汇 以便设计者用于讨论设计中的各个方面...
影印版,清晰完整带标签,设计类pdf
对象设计——角色,职责和协作
角色和责任分工、文档设计与编写 课程级别 信息安全专业工业互联网安全方向。 实验概述 此实验主要内容是掌握在应急响应准备阶段各角色的主要工作。 实验目标 熟悉应急响应领导小组的准备工作; 熟悉应急响应实施...
论文1:MOBA游戏人机协作
图书馆理系统_用例图、时序图、协作图本实验目的在于灵活运用用例图、类图、对象图、活动图、顺序图、通信图、时序图、状态图完成图书管理系统的分析与设计。在图书管理系统设计中,使用各种UML图,从各个侧面分析...
提升缺失的中间技能:用于人工智能协作.pdf
建筑企业环保税:建立信息化协作平台.docx
本文深入浅出阐述了面向对象设计中的职责分配原则,辅以java代码示例。
迈向负责任的未来消费的愿景:消费行业的协作行动框架(英文)-2020.10-29页精品报告2020.pdf
IBV 拥抱开放式创新:实现生态系统协作的价值.pdf
内容概要:通过带着读者归纳了服装设计过程涉及的阶段、角色、协作内容、服装设计协作系统核心功能和权限需求,设计并实现了一个服装设计协作系统。首先归纳了服装设计协作的三个阶段、五种角色、二十五个协作内容和...
对象协作的本质就是对象间信息交换的问题,体现为对象之间的相互访问,即相互存取字段/属性和调用方法。
Presentator是Web设计演示和协作平台
“蓝湖”产品设计协作平台,实现了一张画板展示页面跳转逻辑、设计图历史版本管理、打点评论、自动标注、制作高保真交互原型、团队共享网盘等功能。
一、实验目的 1.熟悉活动图的基本功能,掌握如何使用建模工具绘制活动图方法; 2.熟悉状态图的基本功能,掌握如何使用建模工具绘制...理解顺序图和协作图的基本概念,掌握如何使用建模工具绘制顺序图和协作图的方法。
宝洁:外部联发和无界协作管理资料.pdf
是设计演示和协作平台。 该项目以monorepo的形式组织,由几个解耦的软件包组成: 安装 生产 对于生产环境,建议遵循。 发展 使用Docker创建开发环境可能是开始该项目的最简单方法之一。 如果您不想使用Docker开发...