依然考慮上面的例子,如果B的IReuseInterface接口在功能上與A實現的完全一致,不需要做任何改動.現在采用聚合模型來實現B.對象B本身并不是實現接口IreuseInterface,它只實現接口InewInterface.當B客戶請求IreuseInterface 接口時,對象B把對象A的IreuseInterface接口指針傳遞給客戶程序,因此客戶直接與A進行了交互(雖然它并不知道對象A的存在).
當然,聚合模型在對Iunknown指針的處理上要比包容模型復雜一些.需要進行對象雙方的合作,并不是每對象都能支持聚合的特性.但聚合體現了組件軟件真正意義上的復用,而包容的重用性只是體現在客戶服務器模型相對性的基礎上.實際也就是客戶程序和組件程序的嵌套關系.這是包容和聚合的本質不同.
四 統一數據傳輸和消息傳遞
在基于軟件復用開發的應用系統中,各分立的組件對象要相互協作來共同完成某一特定任務邏輯.為支持各種可能復雜的協作關系,僅有參數信息的傳遞是遠遠不夠的,必須提供應用間數據交換的標準方案和事件,消息的通知機制.