YAZONG 我的开源

以案例描述UML类图中的基本图示法

  ,
0 评论0 浏览

这篇文档写晚了,应该在“设计模式-六大设计原则-汇总”前才好。
以后会逐渐把UML也整理成文章。

image.png
(右键图片以新的TAB页打开看更清晰)

‘+’表示public

‘-’表示private

‘#’表示protected

继承关系:空心三角形+实线来表示。比如鸟和动物。

实现接口:空心三角形+虚线来表示。比如大雁和飞翔。

关联关系:实现箭头来表示。一个类A需要“知道”另一个类B的变化,B是变化的。比如企鹅和气候的关系,企鹅需要了解到气候的规律,在企鹅类A中需要引用到气候类B的对象。公司案例:job中需要关联监听binlog放入mq队列的对象/集合,其他比如apollo配置等监听对象也算。

class A{

    private B b;

}

依赖关系:虚线箭头来表示。比如动物要有生命力,就需要依赖氧气、水以及食物等。同上图所示。(注意一下,这里的几个要素并不是一个“整体”的关系,按“块”来划分。)公司案例:springboot项目启动时,需要依赖mysql、redis、es、apollo等的配置类。

组合关系:实心的菱形+实现箭头来表示。组合/合成/复合是一种强的”拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期是一样的,内部对象和外部对象相独立,生命周期与属主相同,有相同的关系,有相同的关系组成的结构。初始化时,各个类同时生成(相对来说是同时初始化。除了构造方法还有别的吗?)。比如鸟的类A(整体)中,需要实例化翅膀类B(部分)(可能会有多个)。公司案例:比如利用GRPC或THRIFT进行转发消息时,各种消息对象需要一起组装到转发对象中。

class A{

    private B b;

    public A(){

        b = new B();

   }

}

聚合关系:空心的菱形+实现箭头来表示。聚合表示一种弱的”拥有”关系,体现的是对象A可以包含B对象,但B对象不是A对象的一部分,生命周期与属主不同,内部对象和外部对象相独立,聚合关系之间一般能互相替换。比如雁群A和大雁数组B的关系。公司案例:比如maven各个项目之间的聚合依赖关系。

class A{

    private B[] b;

}

标题:以案例描述UML类图中的基本图示法
作者:yazong
地址:https://blog.llyweb.com/articles/2020/04/14/1586796159586.html