目录
项目地址:https://gitee.com/caochenlei/design-pattern
第一章 UML类图:基本介绍
UML (Unified modeling language,统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。
UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和它们之间的关系,比如类、接口之间的关系。
画 UML 图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,类图是描述类与类之间的关系的,是 UML 图中最核心的部分,在学习设计模式的时候,我们有必要掌握类图的使用。类与类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。
第二章 UML类图:依赖关系
2.1、关系介绍
只要在方法局部变量
、方法参数位置
、方法返回值
处使用了另外的类,他们就产生了依赖关系(dependence)。
2.2、代码演示
class Head {
}
class Body {
}
class Hand {
}
class Leg {
}
public class Person {
public Person() {
Head head;
Body body;
Hand hand;
Leg leg;
}
}
2.3、关系图示
在idea
中,选中要显示关系的类,右键Diagrams>Show Diagram...
,然后在打开界面的工具栏选中Show Dependencies
。
在idea
中,依赖关系使用灰色虚线普通箭头进行关系指向。
第三章 UML类图:泛化关系
3.1、关系介绍
泛化关系(generalization)又叫做继承关系,他是依赖关系的一种特例,只要是实现了继承关系的类,都属于泛化关系。
3.2、代码演示
public class Person {
private String name;
private String sex;
private Integer age;
}
class Chinese extends Person {
}
3.3、关系图示
在idea
中,选中要显示关系的类,右键Diagrams>Show Diagram...
,然后在打开界面的工具栏选中Show Dependencies
。
在idea
中,泛化关系使用深蓝色实线实心箭头进行关系指向。
第四章 UML类图:实现关系
4.1、关系介绍
实现关系(implementation)实际上就是 A 类实现 B 接口,他也是依赖关系的一种特例。
4.2、代码演示
//UserService.java
public interface UserService {
}
//UserServiceImpl.java
public class UserServiceImpl implements UserService{
}
4.3、关系图示
在idea
中,选中要显示关系的类,右键Diagrams>Show Diagram...
,然后在打开界面的工具栏选中Show Dependencies
。
在idea
中,实现关系使用绿色虚线实心箭头进行关系指向。
第五章 UML类图:关联关系
5.1、关系介绍
关联关系(association)实际上就是类与类之间的联系,他也是依赖关系的一种特例。关联关系具有导航行,即:单向关系或双向关系,关联关系还具有多重性,如:“1”(表示有且仅有1个)、“0…”(表示0个或者多个)、“0,1”(表示0个或者1个)、“n…m”(表示n个到m个)、“m…”(表示至少m个)、“*”(表示多个)。
5.2、代码演示
//Emp.java
public class Emp {
}
//Dep.java
public class Dep {
private List<Emp> emps;
}
5.3、关系图示
在idea
中,选中要显示关系的类,右键Diagrams>Show Diagram...
,然后在打开界面的工具栏选中Show Dependencies
。
在idea
中,关联关系使用灰色普通箭头+灰色实心菱形进行关系指向。
第六章 UML类图:聚合关系
6.1、关系介绍
聚合关系(aggregation)表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
聚合关系最典型的一个实例就是电脑与鼠标、键盘的关系,电脑离开了鼠标和键盘还是可以正常工作,他们并没有连在一起,可以通过USB接口插拔。
6.2、代码演示
class Mouse {
}
class Keyboard {
}
public class Computer {
private Mouse mouse;
private Keyboard keyboard;
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setKeyboard(Keyboard keyboard) {
this.keyboard = keyboard;
}
}
6.3、关系图示
在idea
中,选中要显示关系的类,右键Diagrams>Show Diagram...
,然后在打开界面的工具栏选中Show Dependencies
。
在idea
中,聚合关系使用灰色普通箭头+灰色实心菱形进行关系指向。
第七章 UML类图:组合关系
7.1、关系介绍
组合关系(composition)表示的是整体和部分的关系,整体与部分不可以分开。组合关系是关联关系的特例,所以他具有关联的导航性与多重性。
组合关系最典型的一个实例就是人体的构成,当一个正常的婴儿诞生的时候,他必然有手脚、头、身体,缺一不可,整体与局部不可分开。
7.2、代码演示
class Head {
}
class Body {
}
class Hand {
}
class Leg {
}
public class Person {
private Head head = new Head();
private Body body = new Body();
private Hand hand = new Hand();
private Leg leg = new Leg();
}
7.3、关系图示
在idea
中,选中要显示关系的类,右键Diagrams>Show Diagram...
,然后在打开界面的工具栏选中Show Dependencies
。
在idea
中,组合关系使用灰色普通箭头+灰色实心菱形进行关系指向。