笔记 笔记
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

EasT-Duan

Java 开发
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

购买兑换码请添加

添加时候请写好备注,否则无法通过。

  • 设计模式

    • 简介

    • 原则

    • UML

      • UML关系
        • 依赖
        • 泛化(继承)
        • 实现
        • 关联
        • 聚合
        • 组合
    • 创建型

    • 结构型

    • 行为型

  • JVM 详解

  • Linux

  • Redis

  • 分布式锁

  • Shiro

  • Gradle

  • Java 进阶
  • 设计模式
  • UML
EasT-Duan
2023-11-08
目录

UML关系

欢迎来到我的 ChatGPT 中转站,极具性价比,为付费不方便的朋友提供便利,有需求的可以添加左侧 QQ 二维码,另外,邀请新用户能获取余额哦!最后说一句,那啥:请自觉遵守《生成式人工智能服务管理暂行办法》。

# 依赖

依赖 (Dependency) 关系:依赖关系表示一个事物 (独立事物) 对另一个事物 (依赖事物) 的语义有依赖关系,当独立事物发生变化时,依赖事物的语义可能会受到影响。依赖关系在图示中一般用带箭头的虚线表示,箭头指向被依赖的事物。

带箭头的虚线指向被使用者

/**
 * 在当前类中需要用到其他的类,说明他们直接存在依赖关系 
 * 1) 类中用到了对方 2) 如果是类的成员属性 3) 如果是方法的返回类型 
 * 4) 是方法接收的参数类型 5) 方法中使用到
 */
public class PersonServiceBean {
	private PersonDao personDao;// 类

	public void save(Person person) {
	}

	public IDCard getIDCard(Integer personid) {
	}

	public void modify() {
		Department department = new Department();
	}
}

public class PersonDao {
}

public class IDCard {
}

public class Person {
}

public class Department {
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 泛化(继承)

泛化 (Generalization) 关系:泛化关系表示一个事物 (子事物) 继承另一个事物 (父事物) 的属性和行为。子事物可以通过继承获得父事物的特性,并且可以添加新的特性或修改继承的特性。泛化关系在图示中一般用带空心箭头的实线表示,箭头指向父事物。

带三角形箭头的实线指向父类

/**
 * 1) 泛化关系实际上就是继承关系2) 如果A类继承了B类,我们就说A和B存在泛化关系
 */
public abstract class DaoSupport {
	public void save(Object entity) {
	}

	public void delete(Object id) {
	}
}

public class PersonServiceBean extends Daosupport {
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 实现

实现 (Realization) 关系:实现关系表示一个事物 (类元) 实现了一个接口或者符合一个协议。在图示中,实现关系一般用带空心箭头的虚线表示。

带三角形箭头的虚线指向接口

public interface PersonService {
	public void delete(Interger id);
}

public class PersonServiceBean implements PersonService {
	public void delete(Interger id) {
	}
}
1
2
3
4
5
6
7
8

# 关联

关联 (Association) 关系:使一个类知道另一个类的属性和方法,表示它们之间有关联和相互作用。关联关系可以是双向的或单向的,并且可以具有角色 (Role)、导航和重复度 (Multiplicity) 等属性。

  • 导航性:即双向关系或单向关系
  • 重复度:如 “1”(表示有且仅有一个),“0...”(表示 0 个或者多个), “0,1”(表示 0 个或者一个),“n...m”(表示 n 到 m 个都可以),“m...*”(表示至少 m 个)

带箭头的实线指向被拥有者,如果是双向关联就实现无箭头

//单向一对一关系
public class Person {
	private IDCard card;
}

public class IDCard {
}

//双向一对一关系
public class Person {
	private IDCard card;
}

public class IDCard {
	private Person person;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 聚合

聚集 (Aggregation):在聚合关系中,整体对象拥有并包含了部分对象,但是部分对象可以在不同的整体对象之间共享。这意味着部分对象可以出现在多个整体对象中,并且可以被多个整体对象共同引用。与此同时,部分对象的生命周期可以独立于整体对象而存在,这意味着整体对象的创建或销毁不会直接影响部分对象的存在。此外,聚合关系中的部分对象也可以脱离整体对象而单独存在。也就是说,当整体对象被销毁时,部分对象仍然可以保持独立存在。聚合关系是关联关系的特例。

如:一台电脑由键盘 (keyboard)、显示器 (monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示:

  • 带空心菱形的实线指向整体

# 组合

组合关系是一种较为强的 "拥有" 关系,整体对象完全控制着其中的部分对象,包括它们的生命周期。如果整体对象被销毁,那么其中的部分对象也会随之被销毁。组合关系特别强调整体对象对部分对象的控制权。

  • 带实心菱形的实线指向整体
//在程序中我们定义实体:Person与IDCard、Head, 那么 Head 和
//Person 就是组合,IDCard 和 Person 就是聚合。
//但是如果在程序中Person实体中定义了对IDCard进行级联删除,即删除Person时
//连同IDCard一起删除,那么IDCard 和 Person 就是组合了.
public class Person {
	private IDCard card;
	private Head head = new Head();
}

public class IDCard {
}

public class Head {
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#设计模式
上次更新: 2025/04/12, 07:54:33
设计模式原则
单例模式

← 设计模式原则 单例模式→

最近更新
01
Reactor 核心
02-24
02
前置条件
10-30
03
计算机网络
09-13
更多文章>
Theme by Vdoing | Copyright © 2019-2025 powered by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式