UML常用箭头 理解
主要分三类/六种:
继承、实现 :
空心三角+ 实线/虚线
依赖、关联
角+实线/虚线
组合、聚合
实心/空心棱形+ 实线
参照UML图理解、记忆

对👌,你总结的正是 UML 类图里最核心的 3 大类 / 6 种箭头,我帮你梳理成标准格式:
UML 箭头 3 类 6 种
① 继承 / 实现(Generalization & Realization)
-
继承 (Generalization)
- 符号:空心三角 + 实线
- 含义:子类继承父类,获得父类的属性和方法。
- 例:
Dog ——▷ Animal
-
实现 (Realization)
- 符号:空心三角 + 虚线
- 含义:类实现接口,接口定义行为,类给出具体实现。
- 例:
ArrayList - -▷ List
② 依赖 / 关联(Dependency & Association)
-
关联 (Association)
- 符号:普通箭头 + 实线(箭头可选,表示可导航方向)
- 含义:类之间有“知道/引用”关系,通常是成员变量。
- 例:
Person ——▶ Address
-
依赖 (Dependency)
- 符号:普通箭头 + 虚线
- 含义:临时使用关系,如方法参数、局部变量、方法调用。
- 例:
OrderService - -▶ Logger
③ 组合 / 聚合(Composition & Aggregation)
-
组合 (Composition)
- 符号:实心菱形 + 实线(菱形在整体端)
- 含义:强拥有关系,部分随整体销毁(生命周期绑定)。
- 例:
Car ◆—— Engine
-
聚合 (Aggregation)
- 符号:空心菱形 + 实线(菱形在整体端)
- 含义:弱拥有关系,部分可独立存在。
- 例:
Team ◇—— Player
📌 一句口诀帮记忆:
- 三角形 → is-a(继承/实现)
- 箭头 → uses(依赖/关联)
- 菱形 → has-a(聚合/组合)
**对照图(六种箭头一张图,带示例类名)

关联 (Association)、聚合 (Aggregation) 和 组合 (Composition) 在 UML 里很容易混淆
这个困惑很正常 👍,因为 关联 (Association)、聚合 (Aggregation) 和 组合 (Composition) 在 UML 里本来就容易混淆,尤其是实际建模时很多人直接都用关联。
我帮你梳理差别(重点放在组合 vs 关联):
1. 关联 Association
-
语义:只是说明两个类之间“有关系”,常见是成员变量。
-
强度:最弱,关系是否长期存在、是否生命周期绑定都没有要求。
-
例子:
Person —— Address(人知道地址,但地址可以独立存在)Student —— Course(学生和课程有关联,但相互独立)
2. 聚合 Aggregation(空心菱形)
-
语义:一种“整体–部分”关系(has-a),但是部分可以脱离整体独立存在。
-
例子:
Team ◇—— Player(队伍里有队员,队员离开队伍依旧存在)
-
本质:比关联更强调“部分–整体”的语义,但生命周期仍不绑定。
3. 组合 Composition(实心菱形)
-
语义:也是整体–部分关系,但更强,部分的生命周期依赖整体。整体销毁时,部分也会销毁。
-
例子:
Car ◆—— Engine(引擎没有车时通常也不独立存在,车没了,引擎也没意义)House ◆—— Room(房子没了,房间也不存在了)
4. 总结对比口诀
- 关联:有关系就行,随意。
- 聚合:有整体–部分,但部分能独立。
- 组合:强拥有,部分跟随整体。
👉 在实际软件设计里:
- 很多人只用 关联 和 组合(直接忽略聚合);
- 如果关系只是“知道/引用” → 用关联;
- 如果是严格的整体–部分关系 → 用组合。
举例
比如 我一个viewgroup中, 里面有很多子View, 子view可以在这个viewgorup 中 也可以用在其他的viewGourp中,当被viewgroup使用时 都扮演重要角色 ,用什么
场景分析
ViewGroup= 容器View= 容器的子元素
特点:
- 一个
View可以被添加到不同的 ViewGroup(虽然运行时只能在一个 parent 里,但从建模语义上,它不是依附于某个特定 ViewGroup 的生命周期)。 View的生命周期 不依赖ViewGroup,View可以独立存在(你 new 一个 TextView,它就能存在,即使不放进任何 ViewGroup)。- 当被
ViewGroup使用时,它在结构中很重要,但并不会因为ViewGroup被销毁就一定销毁(View对象依然是个普通对象,只是脱离了树结构)。
对应 UML 关系
👉 这明显符合 聚合 (Aggregation):
- 整体–部分关系:ViewGroup 是整体,View 是部分。
- 但部分可以独立存在,也能被别的整体使用。
- UML 表示:空心菱形 + 实线
如果是组合 (Composition) 的情况?
举个对比:
- 比如
Car ◆—— Engine,Engine 完全依赖 Car 的生命周期,Car 没了 Engine 就没意义。 - 在 Android 里,如果有一个自定义控件,它 内部固定创建 子控件,并且这些子控件绝不可能被其他地方复用 → 那就更像组合。
结论
- ViewGroup–View:用 聚合 (Aggregation) 更合适。
- 自定义控件–内部固定子控件:可以用 组合 (Composition)。
本文介绍了UML中常见的关系类型,包括继承、实现的表示(空心三角+实线/虚线),依赖和关联的表示(角+实线/虚线),以及组合和聚合的表示(实心/空心棱形+实线)。通过图表和简要说明,帮助读者理解和记忆这些概念。
1021

被折叠的 条评论
为什么被折叠?



