第五章
				协作
		
		
				什么是对象协作
		
		
				
						      
				
				
						协作
				
				是对象之间的相互请求。根据需要,一个对象向其他对象发出邀请或者与之协作,两个对象默契配合履行更大的责任。(
				P125
				)
		
		
				
						 
				
		
		
				关于邻域
				
						
						
				
		
		
				
						    
				
				当将具有共同责任的对象组织成“邻域”时,需要细致的安排邻里之间的协作关系以履行其更大的责任。同样也要指定邻域之外的对象如何与邻域对象提供的服务进行交互。(
				P126
				)
		
		
				
						 
				
		
		
				使用对象契约
				
						
						
				
		
		
				
						         
				
				使用对象契约说明对象如何交互是一种好的方式。当然也不必说出这些东西是如何实现的,契约描述了谁使用哪些责任(客户契约)、声明了在何种条件下使用这些责任(保证使用条件)及责任完成后的标志(保证执行效果),而完全忽略了实现细节。如果想清楚申明责任的预期用法和使用效果,那就得写明契约。(
				P131
				)
		
		
				
						 
				
		
		
				
						 
				
		
		
				如何确定对象协作
		
		
				在确定协作的过程中,我们会使用如下的策略,或者说完成如下任务:
		
		
				
						l         
				
				
						审视对象的构造型。
				
				对象的构造型揭示了对象的本质,通过角色可以推测出对象与对象之间的协作关系。
		
		
				
						l         
				
				
						审视个体责任
				
		
		
				
						l         
				
				
						设计一个复杂责任的细节
				
		
		
				
						l         
				
				
						为特定的用例和事件设计协作
				
		
		
				
						l         
				
				
						寻求组织通信的方式
				
		
		
				
						l         
				
				
						寻求更为简化的方法
				
		
		
				
						 
				
		
		
				
						 
				
		
		
				
						2007
				
				
						年
						3
				
				
						月
						24
				
				
						日星期六
						
								
								
						
				
		
		
				
						 
				
		
		
				
						
								
										    P133 
						
						
								一旦确认对象之间为履行一系列大型责任而相互协作的关系之后,我们将开始更为精确的工作:记录下对象是怎样意识到周围的协作者的,并开发协作所需的通信消息序列及其参数和返回值。
								
										
										
								
						
				
		 
		
				
						 
				
		
		
				审视个体对象的角色:构造型隐含协作
				
						
						
				
		
		
				
						
								构造型为协作提供了一定的线索,如:服务提供者与控制者需要其它对象为其提供信息,而协调者与接口则需要服务,构造者从事组织其他对象的工作。
								
										
										
								
						
				
		 
		
				
						 
				
		
		
				
						
								1
						
						、信息持有者
				
		
		
				信息持有者的职责:
		
		
				
						l         
				
				主要是持有并保证信息的一致性
		
		
				
						l         
				
				也可能经常向其他对象寻求信息
		
		
				
						 
				
		
		
				
						
								千万不要认为若一个对象有了解某种信息的责任,则其必然具有持有该信息的责任,请记住,对象在任何需要要信息的时候,都可以向其他持有该信息的对象寻求帮助。
								
										
										
								
						
				
		 
		
				
						 
				
		
		
				
						
								2
						
						、构造者
				
		
		
				
						聚合关系表示:一个整体对象(如,构造者)有责任管理其组成部分(组合在一起的对象)。
		
		
				
						复合
				
				关系表示:部分只能依附于整体存在,其不能单独存活。
		
		
				
						 
				
		
		
				3
				、服务提供者
		
		
				与专业技术或计算相关的责任应被分配到服务提供者角色中。
		
		
				
						 
				
		
		
				4
				、控制者
		
		
				
						
								控制者与协调者之间的区别在于度。控制者分析事务并采取相应的行为;而协调者之被告知如何做,本身几乎不做任何决策。
								
										
										
								
						
				
		 
		
				
						 
				
		
		
				5
				、协调者
		
		
				协调者的存在仅仅是为了传递消息并驱动其他对象的行为。
		
		
				
						 
				
		
		
				
						
								协调者与构造者一样,维护与其他对象的连接,不过二者的目的不同。协调者主要是协调一组“工人对象”的行为,而构造者将其管理的一组对象组合起来,对外界形成一个整体形象。
								
										
										
								
						
				
		 
		
				
						 
				
		
		
				
						 
				
		
		
				6
				、接口
		
		
				接口是本来相互脱离的事物之间的桥梁。
		
		
				
						 
				
		
		
				
						 
				
		
		
				审视个体责任:它们隐含着协作
				
						
						
				
		
		
				个人责任分为
				3
				大种类:知、行和决策。