零雨其蒙's Blog

做优秀的程序员
随笔 - 59, 文章 - 13, 评论 - 58, 引用 - 0
数据加载中……

零雨其蒙《对象设计:角色、责任和协作》学习笔记(五)

第五章 协作

什么是对象协作

      协作 是对象之间的相互请求。根据需要,一个对象向其他对象发出邀请或者与之协作,两个对象默契配合履行更大的责任。( P125

 

关于邻域

    当将具有共同责任的对象组织成“邻域”时,需要细致的安排邻里之间的协作关系以履行其更大的责任。同样也要指定邻域之外的对象如何与邻域对象提供的服务进行交互。( P126

 

使用对象契约

         使用对象契约说明对象如何交互是一种好的方式。当然也不必说出这些东西是如何实现的,契约描述了谁使用哪些责任(客户契约)、声明了在何种条件下使用这些责任(保证使用条件)及责任完成后的标志(保证执行效果),而完全忽略了实现细节。如果想清楚申明责任的预期用法和使用效果,那就得写明契约。( P131

 

 

如何确定对象协作

在确定协作的过程中,我们会使用如下的策略,或者说完成如下任务:

l         审视对象的构造型。 对象的构造型揭示了对象的本质,通过角色可以推测出对象与对象之间的协作关系。

l         审视个体责任

l         设计一个复杂责任的细节

l         为特定的用例和事件设计协作

l         寻求组织通信的方式

l         寻求更为简化的方法

 

 

2007 3 24 日星期六

 

    P133 一旦确认对象之间为履行一系列大型责任而相互协作的关系之后,我们将开始更为精确的工作:记录下对象是怎样意识到周围的协作者的,并开发协作所需的通信消息序列及其参数和返回值。

 

审视个体对象的角色:构造型隐含协作

构造型为协作提供了一定的线索,如:服务提供者与控制者需要其它对象为其提供信息,而协调者与接口则需要服务,构造者从事组织其他对象的工作。

 

1 、信息持有者

信息持有者的职责:

l         主要是持有并保证信息的一致性

l         也可能经常向其他对象寻求信息

 

千万不要认为若一个对象有了解某种信息的责任,则其必然具有持有该信息的责任,请记住,对象在任何需要要信息的时候,都可以向其他持有该信息的对象寻求帮助。

 

2 、构造者

聚合关系表示:一个整体对象(如,构造者)有责任管理其组成部分(组合在一起的对象)。

复合 关系表示:部分只能依附于整体存在,其不能单独存活。

 

3 、服务提供者

与专业技术或计算相关的责任应被分配到服务提供者角色中。

 

4 、控制者

控制者与协调者之间的区别在于度。控制者分析事务并采取相应的行为;而协调者之被告知如何做,本身几乎不做任何决策。

 

5 、协调者

协调者的存在仅仅是为了传递消息并驱动其他对象的行为。

 

协调者与构造者一样,维护与其他对象的连接,不过二者的目的不同。协调者主要是协调一组“工人对象”的行为,而构造者将其管理的一组对象组合起来,对外界形成一个整体形象。

 

 

6 、接口

接口是本来相互脱离的事物之间的桥梁。

 

 

审视个体责任:它们隐含着协作

个人责任分为 3 大种类:知、行和决策。

posted on 2007-03-24 22:15 零雨其蒙 阅读(277) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: