你可以解释一下聚合,遏制和放大之间的区别吗?委托
答案 0 :(得分:2)
由于您已使用COM对此进行了标记,因此我假设您正在询问COM如何使用这些术语 - 在COM术语中,它们的含义比一般情况下更具体。
方便地,MSDN有定义这些内容的页面 - 我将给出一个简短的总结:
Containment/Delegation - 当一个外部对象拥有(包含)并使用(委托)内部对象时。这两个对象保持不同的身份和不同的接口集。
Aggregation - 当两个或多个COM对象基本上汇集其接口时,其行为就像它们是单个COM对象一样。然后客户端代码处理看似单个对象的内容,但实际上是一个聚合'其他物品。
当您希望一个对象继承'时,通常会使用聚合。来自另一个对象的一组接口。然而,实现起来有点复杂:COM要求从对象的任何接口,您必须能够QI到任何其他接口,因此所涉及的各种对象必须合作以确保您可以从任何接口上进行QI对另一个接口的对象之一,有两个对象的ref计数工作。
答案 1 :(得分:1)
Containment描述了一个类的想法,其中一个数据成员是另一个类/类型的对象。
委托表达了一个类使用另一个类来完成任务或目标的想法。
委托通常由遏制
完成答案 2 :(得分:0)
Aggregation和Containment是对象组合的通用概念(com或其他任何技术的概念)。 Object Composition链接在com中也有一个单独的聚合部分。
同样,您可以阅读delegation。