关联 聚合 组合 区别

前端之家收集整理的这篇文章主要介绍了关联 聚合 组合 区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1 .关联( Association类之间的关联大多用来表示变量实例持有着对其他对象的引用。

200707291185680711722.jpg

Phone 拥有一个对 Button 的引用。2 .聚合( Aggregation聚合是关联的一种特殊形式,它意味着一种整体 / 部分( whole/part )的关系。

200707291185680728957.jpg

一个整体不能是它自己的一部分。 因此 ,实例不能形成聚合回路,一个单独的对象不能够成为它自己的聚合,两个对象不能互相聚合,三个对象不能形成一个聚合环。下图为实例间的非法聚合循环:

200707291185680740754.jpg

3 .组合( Composition组合是一种特殊的聚合形式。

200707291185680749497.jpg

UML 对组合的定义:①如同聚合,实例不能有循环。②一个被所有者实例不能同时有两个所有者。③ 所有者负责被组合的对象的生命周期的管理。如果所有者被销毁,被所有者也必须跟着一起被销毁,如果所有者被复制,被所有者也必须跟着一起被复制。基于此点,可以用组合来描述深拷贝。下图为非法组合:

200707291185680760673.jpg

4 .参考资料⑴ Robert Martin,UML for java programmers,2004

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