设计模式第一谈:UML类间关系

在学习设计模式时,经常会阅读一些UML类图。所以,在谈设计模式之前,需要了解一下UML类之间关系。UML类间关系有:

  • 依赖关系(Dependency)
  • 泛化关系(Generalization)
  • 实现关系(Realization)
  • 关联关系(Association)
  • 聚合关系(Aggregation)
  • 组合关系(Composition)

1、依赖关系

  • 描述:一个类的实现(或部分方法的实现)需要另外一个类的协助,是一种使用关系
  • 示例:对象A持有对象B的引用,对象A需要借住对象B的协助,假如A是一个类,那么B可以是局部变量、方法参数或者对静态方法的调用;用到了有B的部分方法就依赖了B
  • 符号:虚线+实线箭头,箭头指向依赖项
  • 类图:
    UML-依赖关系

2、泛化关系

  • 描述:指定了子类如何特化父类的所有特征和行为,是一种继承关系,表示一般与特殊的关系
  • 示例:B类和C类都有共同的父类:A类,A类是B类和C类的一种泛化
  • 符号:实线+空心三角剪头,箭头指向泛化类
  • 类图:
    UML-泛化关系

3、实现关系

  • 描述:一种类与接口的关系,类实现了接口的所有特征和行为
  • 示例:B类实现了A接口
  • 符号:虚线+空心三角剪头,箭头指向接口
  • 类图:
    UML-实现关系

4、关联关系

  • 描述:
    • 一种特殊的依赖关系,表示类与类之间关系
    • 如果一个类,类中有成员变量,且成员变量是另外一个类,则它们之间就构成了关联关系
    • 关联关系就有导航性(双向关系或单向关系)、多重性(一对多,多对多)
  • 示例:A类中有B类实例作为成员变量
  • 符号:
    • 实心线+实线箭头,箭头指向被拥有者
    • 如果双向关系,可以为一条直线
  • 类图:
    UML-关联关系

5、聚合关系

  • 描述:
    • 一种强的关联关系,表示是整体和部分的关系,整体和部分可以分开
    • 聚合关系的导航性(把A聚合到B,还是把B聚合到A)、多重性(A聚合一个B为单聚合,聚合多个B为多聚合)
    • 在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数传入
  • 示例:A类中有B类、C类实例作为成员变量,并且B类和C类可以从A类中分离出来
  • 符号:
    • 实线+实现箭头+空心菱形,菱形指向整体,箭头执行部分
    • 如果是多聚合,可没有箭头
  • 类图:
    UML-聚合关系

6、组合关系

  • 描述:
    • 也是一种整体和部分的关系,整体和部分不能分开
    • 组合关系也是关联关系,比聚合关系还要强,要求普通的聚合关系代表整体的对象管理代表部分的对象的生命周期
    • 代码实现组合关系时,通常在累的构造方法中直接初始化代表部分的类
  • 示例:A类中有B类、C类实例作为成员变量,并且B类和C类不能脱离A类而单独存在
  • 符号:实线+实线箭头+实心菱形,菱形指向整体,箭头指向部分
  • 类图:
    UML-组合关系
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值