相信希望,相信自己
上一章简单介绍了 设计模式的原则(一), 如果没有看过,请观看上一章
本文参考文章: 常见UML符号详解
UML (Unified modeling language) 统一建模语言,是一种用于软件系统分析和设计的语言工具,
它用于帮助软件开发人员进行思考和记录思路的结果。
如:
修饰符有 public private protected
其中,
public 用 + 号表示 (sex属性)
private 用 - 号表示 (name属性)
protected 用 # 表示 (age 属性)
单个类图,一般分三层,第一层表示类的名称;第二层表示类的特性,通常就是字段和属性;第三层是类的操作,通常是方法或行为
接口类似单个类图也分三层,第一层表示接口的名称;第二层表示接口的特性,通常就是字段;第三层是接口的操作,通常是方法或行为。
接口表示方式有两种
表示方式:修饰符 字段名:字段类型
例如:
表示方式:修饰符 方法名(参数类型 参数):返回值类型
例如:
UML 本身是一套符号的支付宝, 就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,
比如, 类,接口,实现,泛化,依赖,组合,聚合等。
继承(extends),实现(implement),关联(Association),聚合(Aggregation),合成(Composition),依赖(Dependency)。
定义:
代码体现:方法参数,局部变量,静态方法
表示方式:
虚线箭头来表示
public class PersonServiceBean {
private PersonDao personDao;
public void save(Person person) {
}
public IDCard getIdCard(Integer personId){
return new IDCard();
}
public Dept getDept() {
Dept dept = new Dept();
return dept;
}
}
依赖,是只要两个类有联系, 成员变量,方法参数, 方法返回值, 方法内变量(不遵守 迪米特法则时) 都属于 依赖
继承有的文章使用泛化(Generalization)来表示。
定义:
表示方式:
带三角箭头的实线空心三角形,箭头指向父类
如果 A extends B, 那么就说 A 和 B 之间存在泛化关系。
@Data
public class Student extends Person{
}
定义:
表示方式:
带三角箭头的虚线,箭头指向接口
如果 A 类 implements B 接口, 那么就是实现
public interface PersonService {
}
public class PersonServiceBean implements PersonService{
}
定义:
代码体现:成员变量
表示方式:
实线箭头,且箭头指向被拥有者
关联关系实际上就是类与类之间的联系,是依赖关系的特例。
相比于依赖关系, 它具有导航性: 有双向关系 或者单向关系
关系有多重性: 1 (有且只有1个) 0 (0个或者多个) 0,1 (0个或者1个) n…m (n到m个都可以) m…* (至少m个)
@Data
public class IDCard {
private Person person;
}
@Data
public class Person {
private IDCard idCard;
}
定义:
代码体现:成员变量
表示方式:
带空心菱形的实心线,菱形指向整体
聚合关系 表示的是整体和部分的关系, 整体与部分可以分开。
聚合关系是关联关系的特例, 所以他具有关联的导航性和多重性。
public class Computer {
private Mouse mouse;
private Monitor monitor;
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setMonitor(Monitor monitor) {
this.monitor = monitor;
}
}
定义:
代码体现:成员变量
表示方式:
带实心菱形的实线,菱形指向整体
如: 人 和头
@Data
public class Person {
private IDCard idCard;
// 不可以分割,在成员变量时,直接构造。
private Head head = new Head();
}
强弱顺序:
继承=实现>组合>聚合>关联>依赖
这些之间的关系图大概是这样:
本章节的代码放置在 github 上:
https://github.com/yuejianli/DesignPattern/tree/develop/UML
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!