设计模式

UML类图

UML即统一建模语言(Unified Modeling Language)

单个类图

  • 分为三层

    • 最上面一层展示类名(如果是接口,接口名上用<<interface>>字符来表示)

    • 第二层展示类的属性,格式为:

      权限 属性名:类型 [=默认值]
      权限 + 代表 public
      	# 代表 protected
      	~ 代表 default
      	- 代表 private
      如:
      	private String name;
      	-name:String
      
    • 第三层为方法, 格式为:

      权限 方法名称(参数列表) [:返回类型]
      如:
      	public void setName(String name) {
              this.name = name;
          }
      	+setName(String name):void
      

类与类之间的关系

类与类之间的关系主要有泛化(Generalization),实现(Realization),依赖(Dependence),关联(Association),聚合(Aggregation)和组合(Composition)这几种

  • 泛化关系(Generalization)

    泛化在java里的体现即为子类继承父类

    在UML中用空心三角形直线表示,空心三角形指向父类

  • 实现关系(Realization)

    在java里的体现即为类实现接口

    在UML中用空心三角形虚线表示,空心三角形指向被实现的接口

  • 依赖关系(Dependence)

    在java中,一般为以局域变量、方法的形参,或者对静态方法调用的方式去依赖另外一个类

    在UML中用带箭头的虚线表示,箭头指向被依赖的类

  • 关联关系(Association)

    在java中,一般为成员变量,即一个类为另外一个类的成员变量,有单向关联和双向关联两种

    在UML中用单向关联用带箭头的实线表示,箭头指向被关联的类,双向关联用不带箭头的直线来连接两个互相关联的类

  • 聚合关系(Aggregation)

    聚合关系是关联关系的一种,是强的关联关系,是整体和个体之间的关系

    在java中也是实例变量,类似于车子类和引擎类,车子类关联引擎类,这时候车子类和引擎类就为聚合关系,车子为整体,引擎为局部,

    即一个类用到了另外一个类的全部

    在UML中用带空心菱形的直线表示,空心菱形指向整体

  • 组合关系(Composition)

    组合关系是关联关系的一种,是比聚合关系强的关联关系.当集合关系中的整体类负责部分类对象生命周期的时候就为组合关系,组合关系是不能共享的.代表整体的对象需要负责保持部分对象和存活,在一些情况下将负责代表部分的对象湮灭掉.代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期.换言之,代表部分的对象在每一个时刻只能与一个对象发生组合关系,由后者排他的负责生命周期.部分和整体的生命周期一样.

    在java中也是实例变量表示,一般来说,为了达到组合关系,会用构造方法初始化的形式来达到目的,例如汽车类和司机类,当车子没了,司机也没办法当司机了

    在UML中用带实心的菱形直线表示,其中实心菱形指向整体

依赖、关联、聚合、组合这几种关系的耦合度是越来越强的:组合>聚合>关联>依赖。

设计模式

上一篇:mybatis的一对多(collection)


下一篇:[并查集]银河宇宙传说 题解