首页 > 实用文档 > 读书笔记 >

《面向对象设计实践指南》读书笔记

编辑:lin13459411179  成考报名   发布时间:09-26    阅读:

《面向对象设计实践指南》读书笔记

  面向对象应用由类组成,但是由消息定义,类控制着源代码的内容(静态),而消息体现的是活生生的应用(动态)。

  设计必须关心对象之间传递的消息。它不仅要解决对象所知道的内容(职责),以及对象都知道谁(依赖谁)的问题,还要解决他们彼此间如何进行对话的问题(消息接口)。

  类的接口暴露的过多,相互参杂,会导致这些对象被精细地、明确地和容灾性的调整到只能做他们现在所做的事情。

  每一个类都尽可能少的暴露自己,并且尽可能少的知道其它对象,可以让这个类变成可插拔的组件,增加其灵活性。

  每个类就像一个厨房。类的存在除了要实现许多方法,还要满足单一职责。公共部分和私有部分之间的存在差别,且是最有效的做事方法。如果让顾客来知道烹饪,那么当厨房配料不足,以及需要更换人手时,他们就不得不在接受培训。使用菜单避免了这个问题,让每一位顾客只询问他们想要的东西,同时不用知道有关厨房是如何制作它的任何事情。

  公共接口

  暴露了其主要职责

  期望被其它对象调用

  不会因一时兴起而改变

  对其他依赖它的对象来说是安全的

  在测试里被详尽的记录

  私有接口

  要处理实现细节

  不希望被发送到其它对象

  可以因任何不明的原因而变化

  对其他依赖它的对象来说不安全

  可能在测试里被引用

  类的公共部分是稳定的,而私有部分则是多边的。当将方法标识为公共或私有时,你便在告诉这个类的用户: 哪些方法是可以安全依赖的。当你的类使用了其他类的公共方法时,你就选择了相信这些方法是稳定的。当你决定依赖于其他对象的私有方法时,你应该明白:你正依赖某些天生就不够稳定的事物,因此它会增加你的风险,让你受到某个遥远毫不相干的变化所产生的影响。

  有着丰富设计经验的设计师,他们在心里建立了一张地图,其中描绘的是这个应用程序里可能存在的各种对象,以及他们之间可能存在的交互。他们不会束缚于任何特定的想法,并且会计划使用测试来发现替代品。

  领域对象(需求中那些浅显的名词)会被很容易找出来,但它们不是程序的设计中心。事实上,他们是一个为粗心大意而设立的陷阱。如果你关注这些领域对象,你就会倾向于给它们强加上行为。设计专家们也会注意到这些领域对象,但不会把精力放置到它们身上。他们不会去关注这些对象;相反,他们会去关注它们之间传递的消息。这些消息会引导你去发现其他的对象,而这些对象可远没有那么明显。

  时序图

  时序图提供了一种简单的方式,用来对不同对象的排列和消息传递方法进行试验。

  时序图两个主要部分: 对象和它们之间传递的消息

  横线表示的是消息。当有消息发送时,横线会被贴上消息的名称。消息的结尾或开始带有一个箭头,箭头指向接受者。当某个对象忙于处理接收到的消息时,它会变成活跃的,并且其数显会扩大成为一个垂直的矩形。

  上图被解读为: 顾客Moe现将suitable_traips消息发送到Trip类;接着,这个类会被激活,并处理这条消息;在处理完成之后,这个类会返回一个响应。

  用例里的名词在时序图里变成了对象,而用例的动作都变成了消息。

  时序图的价值在于: 它们明确指定了对象间传递的消息,因为对象间只应该使用公共接口进行通信;时序图是一种用于暴露、试验并最终定义这些接口的工具。

  面向消息的设计,首先要确定发送弄些消息,其次是这些消息要被发送到哪里?

  从基于类的设计转变为基于消息的设计,这是你设计生涯中的一个转折点。从基于消息的角度比从基于类的角度更能产生出灵活的应用程序。将那个基本设计问题从『我知道我需要这个类,那该怎么办?』转变为『我需要发送这条消息,谁应该响应它呢?』

  『你发送的消息不是因为你有了对象,你有了对象是因为你要发送消息』

  醍醐灌顶,有没有

  请询问『要什么』,别告知『如何做』

  寻求上下文独立

  对象所期望的上下文会直接影响到重用它的难度。具有简单上下文的对象易于使用,也易于测试,他们对周边的环境期望很少。具有复杂上下文的对象难以使用,也难以测试,在它们能够做任何事情之前,都需要进行复杂的设置

  最好的情况是对象与它们的上下文保持完全独立。如果某个对象在与其他堆叠进行合作时,不知道他们是谁,也不知道它们所做的事情,那么这个对象便可以按各种千奇百怪和完全无法预测的方式重用,依赖注入就是一个可以帮助剥离上下文的技术。

  创建基于消息的程序

  使用时序图来探究设计,定义公共接口,以及发现对象。时序图可以用来做瞬态分析,可以帮助理解过程,有助于我们将焦点集中在消息上,并让我们形成一个合理的意图目的,将注意力从对象转换到消息,可以让我们专注设计一个建立在公共接口上的应用程序。

  • ·名人传读书笔记(共8篇)(2015-08-31)
  • ·《钢铁是怎样炼成的》读书笔记(共10篇)(2015-08-31)
  • ·读书笔记怎么写格式(共8篇)(2015-08-31)
  • ·红楼梦读书笔记(共8篇)(2015-08-31)
  • ·读书笔记钢铁是怎样炼成的(共8篇)(2015-08-31)
  • ●【往下看,下一篇更精彩】●

    最新成考报名

  • 幼儿园大班教养笔记范文三篇
  • 幼儿园大班教养笔记【三篇】
  • 骆驼祥子读书笔记1000字
  • 幼儿园教师读书心得笔记《我为谁工作...
  • 轮椅上的霍金读书笔记
  • 《成为有思想的教师》教师读书笔记
  • 《谈美书简》优秀读书笔记范文
  • 读书笔记大全100字10篇