类的组合与聚合

前端之家收集整理的这篇文章主要介绍了类的组合与聚合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
还有一个类似的概念“组成(Composition,又译“组合”、“合成”)”,与聚合的区别就是部分类不能脱离整体类而存在。

对c++,形如:
classB1;
classB2;
classB3;
classA
{
B1b1;
B2&b2;
B3*b3;
};
B1,B2,B3都是部分类
B1与A的关系是组成关系。
B2、B3与A的关系是聚合还是组成要根据这一条:部分类是否能脱离整体类而存在。
在这里可以理解他们的生命周期是否同步。
如果b2,b3是通过外部传入的,形如:
public:
A(B3*b3)
m_b3=b3);
}
private:
B3*m_b3;
main()
B2bbb;
Aa(&bbb);
bbb并不会因为a的消亡而消亡。那么就是聚合关系。
反之,如果
m_b3是在A的构造函数new,在A的析构函数delete,两者生命周期一样,那么就是组成关系。
引用的情况类似。
个人感觉uml为了满足所谓通用性,使得对模型的描述很粗糙,并没有吹嘘的那么好。
仅供参考。

猜你在找的设计模式相关文章