@
在学习设计模式时,我们要看到很多UML类图,so先来学习下如何看懂UML类图
类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图中最基本的元素是类、接口。
定义一个类:
参见上图这个动物就代表一个类,这个类图分为三层
- 第一层:代表类名,如果类名是斜体的话,代表是一个抽象类
- 第二层:代表类的字段和属性
- 第三层:代表类的方法和行为
我们可以发现,在类的字段和类的方法前面符号有一个+号,这里对应的含义:
+ | - | # |
---|---|---|
public | private | protected |
定义一个接口:
定义一个接口,有两种方式:
1、矩形表示法
顶端有interface,第一行表示接口名称,第二行表示接口方法
2、棒棒糖表示法
圆圈旁的是接口名称,第三行是接口方法,接口方法在实现类中出现。
如何表示继承关系?
继承关系是由空心三角和实线来表示
如何表示实现关系?
实现关系是由空心三角和虚线来表示
如何表示关联关系?
当一个类’知道‘另一个类的时候,可以用关联来表示,表现形式为一个对象含有另一个对象的引用。也就是说,如果一个对象的类代码中,包含有另一个对象的引用,那么这两个对象之间就是关联关系。关联关系用实线箭头来表示。
如何表示聚合关系?
聚合标识的是一种弱的’拥有‘关系,体现是A对象可以包含B对象,但B对象不是A对象的一部分。例如,公司部门与员工的关系,一个员工可以属于多个部门,一个部门撤消了,员工可以转到其它部门。
聚合关系用空心的菱形和实现箭头来表示
如何表示组合关系?
组合关系是一种强的’拥有‘关系,体现是严格的部分和整体关系,部分和整体的生命周期是一样的。例如,鸟的生命和鸟的翅膀,它们的生命周期一致。组合关系用实心的菱形和实现箭头来表示
合成关系的两端还有数字 1 和 2 ,这个被称为基数,表明这一端的类可以有多少实例,很显然一个鸟是有两个翅膀的;如果有无数个实例用n来表示,关联关系、聚合关系都是有这种基数标识
如何表示依赖关系?
比如动物依赖于氧气和水,他们之间就是依赖关系,由使用方指向被使用方,表示使用方对象持有被使用方对象的引用,用虚线箭头来表示;
依赖关系在Java中的具体代码表现形式为B为A的构造器或方法中的局部变量、方法或构造器的参数、方法的返回值,或者A调用B的静态方法。