依然考虑上面的例子,如果B的IReuseInterface接口在功能上与A实现的完全一致,不需要做任何改动.现在采用聚合模型来实现B.对象B本身并不是实现接口IreuseInterface,它只实现接口InewInterface.当B客户请求IreuseInterface 接口时,对象B把对象A的IreuseInterface接口指针传递给客户程序,因此客户直接与A进行了交互(虽然它并不知道对象A的存在).
当然,聚合模型在对Iunknown指针的处理上要比包容模型复杂一些.需要进行对象双方的合作,并不是每对象都能支持聚合的特性.但聚合体现了组件软件真正意义上的复用,而包容的重用性只是体现在客户服务器模型相对性的基础上.实际也就是客户程序和组件程序的嵌套关系.这是包容和聚合的本质不同.
四 统一数据传输和消息传递
在基于软件复用开发的应用系统中,各分立的组件对象要相互协作来共同完成某一特定任务逻辑.为支持各种可能复杂的协作关系,仅有参数信息的传递是远远不够的,必须提供应用间数据交换的标准方案和事件,消息的通知机制.