- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《面向对象设计实践指南》读书笔记
《面向对象设计实践指南》读书笔记 导读: 面向对象应用由类组成,但是由消息定义,类控制着源代码的内容(静态),而消息体现的是活生生的应用(动态)。... 《面向对象设计实践指南》读书笔记 面向对象应用由类组成,但是由消息定义,类控制着源代码的内容(静态),而消息体现的是活生生的应用(动态)。 设计必须关心对象之间传递的消息。它不仅要解决对象所知道的内容(职责),以及对象都知道谁(依赖谁)的问题,还要解决他们彼此间如何进行对话的问题(消息接口)。 类的接口暴露的过多,相互参杂,会导致这些对象被精细地、明确地和容灾性的调整到只能做他们现在所做的事情。 每一个类都尽可能少的暴露自己,并且尽可能少的知道其它对象,可以让这个类变成可插拔的组件,增加其灵活性。 每个类就像一个厨房。类的存在除了要实现许多方法,还要满足单一职责。公共部分和私有部分之间的存在差别,且是最有效的做事方法。如果让顾客来知道烹饪,那么当厨房配料不足,以及需要更换人手时,他们就不得不在接受培训。使用菜单避免了这个问题,让每一位顾客只询问他们想要的东西,同时不用知道有关厨房是如何制作它的任何事情。 公共接口 暴露了其主要职责 期望被其它对象调用 不会因一时兴起而改变 对其他依赖它的对象来说是安全的 在测试里被详尽的记录 私有接口 要处理实现细节 不希望被发送到其它对象 可以因任何不明的原因而变化 对其他依赖它的对象来说不安全 可能在测试里被引用 类的公共部分是稳定的,而私有部分则是多边的。当将方法标识为公共或私有时,你便在告诉这个类的用户: 哪些方法是可以安全依赖的。当你的类使用了其他类的公共方法时,你就选择了相信这些方法是稳定的。当你决定依赖于其他对象的私有方法时,你应该明白:你正依赖某些天生就不够稳定的事物,因此它会增加你的风险,让你受到某个遥远毫不相干的变化所产生的影响。 有着丰富设计经验的设计师,他们在心里建立了一张地图,其中描绘的是这个应用程序里可能存在的各种对象,以及他们之间可能存在的交互。他们不会束缚于任何特定的想法,并且会计划使用测试来发现替代品。 领域对象(需求中那些浅显的名词)会被很容易找出来,但它们不是程序的设计中心。事实上,他们是一个为粗心大意而设立的陷阱。如果你关注这些领域对象,你就会倾向于给它们强加上行为。设计专家们也会注意到这些领域对象,但不会把精力放置到它们身上。他们不会去关注这些对象;相反,他们会去关注它们之间传递的消息。这些消息会引导你去发现其他的对象,而这些对象可远没有那么明显。 时序图 时序图提供了一种简单的方式,用来对不同对象的排列和消息传递方法进行试验。 时序图两个主要部分: 对象和它们之间传递的消息 横线表示的是消息。当有消息发送时,横线会被贴上消息的名称。消息的结尾或开始带有一个箭头,箭头指向接受者。当某个对象忙于处理接收到的消息时,它会变成活跃的,并且其数显会扩大成为一个垂直的矩形。 上图被解读为: 顾客Moe现将suitable_traips消息发送到Trip类;接着,这个类会被激活,并处理这条消息;在处理完成之后,这个类会返回一个响应。 用例里的名词在时序图里变成了对象,而用例的动作都变成了消息。 时序图的价值在于: 它们明确指定了对象间传递的消息,因为对象间只应该使用公共接口进行通信;时序图是一种用于暴露、试验并最终定义这些接口的工具。 面向消息的设计,首先要确定发送弄些消息,其次是这些消息要被发送到哪里? 从基于类的设计转变为基于消息的设计,这是你设计生涯中的一个转折点。从基于消息的角度比从基于类的角度更能产生出灵活的应用程序。将那个基本设计问题从『我知道我需要这个类,那该怎么办?』转变为『我需要发送这条消息,谁应该响应它呢?』 『你发送的消息不是因为你有了对象,你有了对象是因为你要发送消息』 醍醐灌顶,有没有 请询问『要什么』,别告知『如何做』 寻求上
文档评论(0)