Association & Aggregation & Composition

概述

本文主要从概念上介绍AssociationAggregationComposition

背景

UML中aggregation和composition均被定义为association的特殊形式,更准确地说是部分-整体关联(part-whole-associaiton)的特殊形式

Association

定义

  • 当一个对象使用另一个对象时,Association关系出现在对象之间,技术上来说可以认为是基于两个类之间关系的引用,即一个类拥有另一个类的类级别的引用
  • Association没有部分-整体的关系
  • 单向功能(uni-directional functional)的Association对应于面向对象(OO)编程语言里一个类的引用属性reference property),SQL中一个表的外键
  • 两个对象类型之间的Association被称作双向的(binary

Aggregation

定义

  • 当一个对象使用另一个对象时出现Aggregation关系,对象之间处于部分-整体的关系,并且部分的生命期并不依赖于整体的生命期
  • Aggregation是部分-整体关联的一种特殊形式,即整体的部分可以被其它的整体共享
  • Aggregation的多重性可以使用*在任何一边结束,因为这里的部分可能属于或被其它的整体分享

Composition

定义

  • Composition关系中一个对象使用另一个对象,并且对象之间存在部分-整体的关系,但是部分的生命期依赖于整体的生命期
  • 如果一个Composition对象被删除了,所有其它的实例都会被删除
  • Composition的多重性使用10..1在合成的一边结束,依赖于该组件是否有许多合成体

参考方案

  1. Understanding Association, Aggregation, and Composition
  2. Really Understanding Association, Aggregation, and Composition
  3. Why Are Associations So Difficult to Understand, Not Just for Developers?
  4. Association, Aggregation, Composition, Dependency and IOC for Beginners