聚合(aggregation)和相识(acquaintance)
@(Design Patterns)[C++, 设计模式]
在《模式设计》一书中,聚合与相识的定义分别如下,
聚合 意味着一个对象拥有另一个对象或对另一个对象负责。一般我们称一个对象包含另一个对象或者是另一个对象的一部分。
相识 意味着一个对象仅仅知道另一个对象。有时相识也被称为“关联”或“引用”关系。相识的对象可能请求彼此的操作,但是它们不为对方负责。
CSDN讨论社区的一个例子能够很好的说明两者的区别。
聚合
聚合对象包容了被聚合对象,或者说,聚合对象控制被聚合对象的生命期,在C++中,如果被聚合对象在聚合对象中是以成员变量的形式存在的,那么二者同生同 死。如果被聚合对象是以其指针方式被聚合的,它有可能是延迟构造并可能是提前析构的,即被聚合对象诞生于聚合对象之后,死于聚合对象之前。
class Aggregatee //被聚合对象
{
};
class Aggregator //聚合对象
{