聚合与组合
|
组合 |
聚合 |
定义 |
几个独立部分组成的整体 |
分散的聚到一起 |
标识 |
实心菱形加实线箭头表示 |
空心菱形加实线箭头表示 |
整体和部分的关系强弱程度 |
强 |
弱 |
与生存期的关系 |
||
图 |
|
|
例子 |
你和你的心脏之间是组合关系 |
你和你买的书之间是聚合关系 |
总结 |
异构性,部分和主体具有生命期上的一致性 |
同构性,主体和部分不具有生命期的一致性 |
共同点 |
表示类之间整体和部分的关系,都是关联的一种特例 |
关联与依赖
|
关联 |
依赖 |
定义 |
关联是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。 |
依赖是类与类之间的连接,依赖关系代表一个类依赖于另一个类的定义。 |
标识 |
用一条直线表示 |
用一条带箭头的虚线表示,箭头指向被依赖的一方。 |
类之间的强弱程度 |
很强的关系 |
较弱的关系 |
类之间关系的时间角度 |
持久关系,需保存 |
临时、短暂关系,不需保持 |
方向 |
不做说明,是双向;大部分情况下,是单向。 |
总是单向 |
例子 |
我和我的朋友是关联关系 |
人要过河,需要借用一条船,此时人与船之间的关系就是依赖 |
关联与聚合
关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。
总结
他们的关系按强弱分有:依赖<关联<聚合<组合
聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司。
原文链接:https://www.f2er.com/javaschema/285770.html