尚硅谷 Java 设计模式
尚硅谷 Java 设计模式
尚硅谷-韩顺平
更多 Java –大数据 –前端 –python 人工智能- 区块链 资料下载,可访问百度:尚硅谷官网
第 I页
尚硅谷 Java 设计模式
第 1 章 内容介绍和授课方式 ............................................................................................................................................................ 1
1.1 JAVA 设计模式内容介绍 .............................................................................................................................................................. 1
1.1.1 先看几个经典的面试题 ........................................................................................................................................ 1
1.1.2 设计模式的重要性 ................................................................................................................................................ 3
1.2 课程亮点和授课方式 ................................................................................................................................................................. 4
第 2 章 设计模式七大原则 ............................................................................................................................................................... 6
2.1 设计模式的目的 ........................................................................................................................................................................ 6
2.2 设计模式七大原则 ..................................................................................................................................................................... 6
2.3 单一职责原则 ............................................................................................................................................................................ 7
2.3.1 基本介绍 .............................................................................................................................................................. 7
2.3.2 应用实例 .............................................................................................................................................................. 7
2.3.3 单一职责原则注意事项和细节 ........................................................................................................................... 12
2.4 接口隔离原则(INTERFACE SEGREGATION PRINCIPLE) ............................................................................................................................ 12
2.4.1 基本介绍 ............................................................................................................................................................ 12
2.4.2 应用实例 ............................................................................................................................................................ 13
2.4.3 应传统方法的问题和使用接口隔离原则改进 ...................................................................................................... 16
2.5 依赖倒转原则 .......................................................................................................................................................................... 21
2.5.1 基本介绍 ............................................................................................................................................................ 21
2.5.2 应用实例 ............................................................................................................................................................ 21
2.5.3 依赖关系传递的三种方式和应用案例................................................................................................................. 24
2.5.4 依赖倒转原则的注意事项和细节 ........................................................................................................................ 28
2.6 里氏替换原则 .......................................................................................................................................................................... 29
2.6.1 OO 中的继承性的思考和说明 .............................................................................................................................. 29
2.6.2 基本介绍 ............................................................................................................................................................ 29
2.6.3 一个程序引出的问题和思考 ............................................................................................................................... 30
2.6.4 解决方法 ............................................................................................................................................................ 31
2.7 开闭原则 ................................................................................................................................................................................. 34
2.7.1 基本介绍 ............................................................................................................................................................ 34
2.7.2 看下面一段代码 ................................................................................................................................................. 35
2.7.3 方式 1 的优缺点 ................................................................................................................................................. 38
2.7.4 改进的思路分析 ................................................................................................................................................. 38
2.8 迪米特法则 .............................................................................................................................................................................. 42
2.8.1 基本介绍 ............................................................................................................................................................ 42
2.8.2 应用实例 ............................................................................................................................................................ 42
2.8.3 应用实例改进 ..................................................................................................................................................... 46
2.8.4 迪米特法则注意事项和细节 ............................................................................................................................... 51
2.9 合成复用原则(COMPOSITE REUSE PRINCIPLE) ....................................................................................................................... 51
2.9.1 基本介绍 ............................................................................................................................................................ 51
更多 Java –大数据 –前端 –python 人工智能- 区块链 资料下载,可访问百度:尚硅谷官网
第 II页
尚硅谷 Java 设计模式
2.10 设计原则核心思想 ................................................................................................................................................................. 51
第 3 章 UML 类图 .......................................................................................................................................................................... 53
3.1 UML 基本介绍 ......................................................................................................................................................................... 53
3.2 UML 图 .................................................................................................................................................................................... 54
3.3 UML 类图 ................................................................................................................................................................................ 55
3.4 类图—依赖关系(DEPENDENCE) ........................................................................................................................................... 56
3.5 类图—泛化关系(GENERALIZATION) ........................................................................................................................................ 57
3.6 类图—实现关系(IMPLEMENTATION) .................................................................................................................................... 58
3.7 类图—关联关系(ASSOCIATION) ........................................................................................................................................... 59
3.8 类图—聚合关系(AGGREGATION) ......................................................................................................................................... 59
3.8.1 基本介绍 ............................................................................................................................................................ 59
3.8.2 应用实例 ............................................................................................................................................................ 59
3.9 类图—组合关系(COMPOSITION) .......................................................................................................................................... 60
3.9.1 基本介绍 ............................................................................................................................................................ 60
3.9.2 应用案例 ............................................................................................................................................................ 60
第 4 章 设计模式概述 ..................................................................................................................................................................... 63
4.1 掌握设计模式的层次 ............................................................................................................................................................... 63
4.2 设计模式介绍 .......................................................................................................................................................................... 63
4.3 设计模式类型 .......................................................................................................................................................................... 63
第 5 章 单例设计模式 ..................................................................................................................................................................... 65
5.1 单例设计模式介绍 ................................................................................................................................................................... 65
5.2 单例设计模式八种方式 ........................................................................................................................................................... 65
5.3 饿汉式(静态常量) ............................................................................................................................................................... 65
5.4 饿汉式(静态代码块) ........................................................................................................................................................... 67
5.5 懒汉式(线程不安全) ............................................................................................................................................................................... 69
5.6 懒汉式(线程安全,同步方法) ............................................................................................................................................................... 71
5.7 懒汉式(线程安全,同步代码块) ........................................................................................................................................................... 72
5.8 双重检查 ................................................................................................................................................................................. 73
5.9 静态内部类 .............................................................................................................................................................................. 75
5.10 枚举 ....................................................................................................................................................................................... 77
5.11 单例模式在 JDK 应用的源码分析 ......................................................................................................................................... 78
5.11.1 单例模式在 JDK 应用的源码分析 .................................................................................................................... 78
5.12 单例模式注意事项和细节说明 ............................................................................................................................................... 79
第 6 章 工 厂 模式............................................................................................................................................................................ 80
6.1 简单工厂模式 .......................................................................................................................................................................... 80
6.1.1 看一个具体的需求 .............................................................................................................................................. 80
更多 Java –大数据 –前端 –python 人工智能- 区块链 资料下载,可访问百度:尚硅谷官网
第 II页
尚硅谷 Java 设计模式
6.1.2 使用传统的方式来完成 ...................................................................................................................................... 80
6.1.3 传统的方式的优缺点 .......................................................................................................................................... 82
6.1.4 基本介绍 ............................................................................................................................................................ 82
6.1.5 使用简单工厂模式 .............................................................................................................................................. 83
6.2 工厂方法模式 .......................................................................................................................................................................... 89
6.2.1 看一个新的需求 ................................................................................................................................................. 89
6.2.2 思 路 1................................................................................................................................................................................ 89
6.2.3 思 路 2................................................................................................................................................................................ 89
6.2.4 工厂方法模式介绍 .............................................................................................................................................. 89
6.2.5 工厂方法模式应用案例 ...................................................................................................................................... 89
6.3 抽象工厂模式 .......................................................................................................................................................................... 94
6.3.1 基本介绍 ............................................................................................................................................................ 94
6.3.2 抽象工厂模式应用实例 ...................................................................................................................................... 95
6.4 工厂模式在 JDK-CALENDAR 应用的源码分析 ......................................................................................................................... 99
6.5 工厂模式小结 ........................................................................................................................................................................ 103
第 7 章 原 型 模式.......................................................................................................................................................................... 104
7.1 克隆羊问题 ............................................................................................................................................................................ 104
7.2 传统方式解决克隆羊问题 ...................................................................................................................................................... 104
7.3 传统的方式的优缺点 ............................................................................................................................................................. 105
7.4 原型模式-基本介绍................................................................................................................................................................ 105
7.5 原型模式原理结构图-UML 类图 ............................................................................................................................................. 106
7.6 原型模式解决克隆羊问题的应用实例.................................................................................................................................... 106
7.7 原型模式在 SPRING 框架中源码分析 ..................................................................................................................................... 110
7.8 深入讨论-浅拷贝和深拷贝 ..................................................................................................................................................... 110
7.8.1 浅拷贝的介绍 ................................................................................................................................................... 110
7.8.2 深拷贝基本介绍 ................................................................................................................................................ 111
7.9 深拷贝应用实例 ..................................................................................................................................................................... 111
7.10 原型模式的注意事项和细节 ................................................................................................................................................ 116
第 8 章 建造者模式 .......................................................................................................................................................................118
8.1 盖房项目需求 ........................................................................................................................................................................ 118
8.2 传统方式解决盖房需求 ......................................................................................................................................................... 118
8.3 传统方式的问题分析 ............................................................................................................................................................. 120
8.4 建造者模式基本介绍 ............................................................................................................................................................. 121
8.5 建造者模式的四个角色 ......................................................................................................................................................... 121
8.6 建造者模式原理类图 ............................................................................................................................................................. 121
8.7 建造者模式解决盖房需求应用实例 ....................................................................................................................................... 122
8.8 建造者模式在 JDK 的应用和源码分析 .................................................................................................................................. 129
更多 Java –大数据 –前端 –python 人工智能- 区块链 资料下载,可访问百度:尚硅谷官网
第 II页
尚硅谷 Java 设计模式
8.9 建造者模式的注意事项和细节 .............................................................................................................................................. 129
第 9 章 适配器设计模式 ............................................................................................................................................................... 131
9.1 现实生活中的适配器例子 ...................................................................................................................................................... 131
9.2 基本介绍 ............................................................................................................................................................................... 131
9.3 工作原理 ............................................................................................................................................................................... 131
9.4 类适配器模式 ........................................................................................................................................................................ 132
9.4.1 类适配器模式介绍 ............................................................................................................................................ 132
9.4.2 类适配器模式应用实例 .................................................................................................................................... 132
9.4.3 类适配器模式注意事项和细节 ......................................................................................................................... 135
9.5 对象适配器模式 .................................................................................................................................................................... 135
9.5.1 对象适配器模式介绍 ........................................................................................................................................ 135
9.5.2 对象适配器模式应用实例 ................................................................................................................................. 136
9.5.3 对象适配器模式注意事项和细节 ...................................................................................................................... 140
9.6 接口适配器模式 .................................................................................................................................................................... 140
9.6.1 接口适配器模式介绍 ........................................................................................................................................ 140
9.6.2 接口适配器模式应用实例 ................................................................................................................................. 140
9.7 适配器模式在 SPRINGMVC 框架应用的源码剖析 .................................................................................................................. 144
9.8 适配器模式的注意事项和细节 .............................................................................................................................................. 146
第 10 章 桥 接 模式 ........................................................................................................................................................................ 147
10.1 手机操作问题 ...................................................................................................................................................................... 147
10.2 传统方案解决手机操作问题 ................................................................................................................................................ 147
10.3 传统方案解决手机操作问题分析 ......................................................................................................................................... 148
10.4 桥接模式(BRIDGE)-基本介绍 ................................................................................................................................................ 148
10.5 桥接模式(BRIDGE)-原理类图 ................................................................................................................................................ 148
10.6 桥接模式解决手机操作问题 ................................................................................................................................................ 149
10.7 桥接模式在 JDBC 的源码剖析 ............................................................................................................................................. 156
10.8 桥接模式的注意事项和细节 ................................................................................................................................................ 157
10.9 常见的应用场景................................................................................................................................................................... 158
第 11 章 装饰者设计模式 ............................................................................................................................................................. 159
11.1 星巴克咖啡订单项目(咖啡馆): ..................................................................................................................................... 159
11.2 方案 1-解决星巴克咖啡订单项目 ......................................................................................................................................... 159
11.3 方案 1-解决星巴克咖啡订单问题分析 ................................................................................................................................. 159
11.4 方案 2-解决星巴克咖啡订单(好点) ................................................................................................................................................... 160
11.5 方案 2-解决星巴克咖啡订单问题分析 ................................................................................................................................. 160
11.6 装饰者模式定义 ................................................................................................................................................................... 161
11.7 装饰者模式原理 ................................................................................................................................................................... 161
11.8 装饰者模式解决星巴克咖啡订单 ......................................................................................................................................... 162
更多 Java –大数据 –前端 –python 人工智能- 区块链 资料下载,可访问百度:尚硅谷官网
第 II页
尚硅谷 Java 设计模式
11.9 装饰者模式下的订单:2 份巧克力+一份牛奶的 LONGBLACK .............................................................................................................................. 162
11.10 装饰者模式咖啡订单项目应用实例 .................................................................................................................................... 162
11.11 装饰者模式在 JDK 应用的源码分析 .................................................................................................................................. 170
第 12 章 组 合 模式 ........................................................................................................................................................................ 172
12.1 看一个学校院系展示需求 .................................................................................................................................................... 172
12.2 传统方案解决学校院系展示(类图) ................................................................................................................................................... 172
12.3 传统方案解决学校院系展示存在的问题分析 ....................................................................................................................... 172
12.4 组合模式基本介绍 ............................................................................................................................................................... 173
12.5 组合模式原理类图 ............................................................................................................................................................... 173
12.6 组合模式解决学校院系展示的 应用实例 ............................................................................................................................ 174
12.7 组合模式在 JDK 集合的源码分析 ........................................................................................................................................ 183
12.8 组合模式的注意事项和细节 ................................................................................................................................................ 184
第 13 章 外 观 模式 ........................................................................................................................................................................ 185
13.1 影院管理项目 ...................................................................................................................................................................... 185
13.2 传统方式解决影院管理 ........................................................................................................................................................ 185
13.3 传统方式解决影院管理问题分析 ......................................................................................................................................... 186
13.4 外观模式基本介绍 ............................................................................................................................................................... 186
13.5 外观模式原理类图 ............................................................................................................................................................... 186
13.6 外观模式解决影院管理 ........................................................................................................................................................ 187
13.6.1 传统方式解决影院管理说明 ........................................................................................................................... 187
13.6.2 外观模式应用实例 .......................................................................................................................................... 187
13.7 外观模式在 MYBATIS 框架应用的源码分析 ......................................................................................................................... 197
13.8 外观模式的注意事项和细节 ................................................................................................................................................ 198
第 14 章 享 元 模式 ........................................................................................................................................................................ 199
14.1 展示网站项目需求 ............................................................................................................................................................... 199
14.2 传统方案解决网站展现项目 ................................................................................................................................................ 199
14.3 传统方案解决网站展现项目-问题分析 ................................................................................................................................ 199
14.4 享元模式基本介绍 ............................................................................................................................................................... 200
14.5 享元模式的原理类图 ........................................................................................................................................................... 200
14.6 内部状态和外部状态 ........................................................................................................................................................... 201
14.7 享元模式解决网站展现项目 ................................................................................................................................................ 202
14.8 享元模式在 JDK-INTERGER 的应用源码分析 ........................................................................................................................ 207
14.9 享元模式的注意事项和细节 ................................................................................................................................................ 209
第 15 章 代 理 模式 ........................................................................................................................................................................ 210
15.1 代理模式(PROXY) ................................................................................................................................................................................ 210
15.1.1 代理模式的基本介绍 ...................................................................................................................................... 210
更多 Java –大数据 –前端 –python 人工智能- 区块链 资料下载,可访问百度:尚硅谷官网
第 II页
尚硅谷 Java 设计模式
15.2 静态代理 ............................................................................................................................................................................. 210
15.2.1 静态代码模式的基本介绍 ............................................................................................................................... 210
15.2.2 应用实例......................................................................................................................................................... 211
15.2.3 静态代理优缺点 .............................................................................................................................................. 214
15.3 动态代理 ............................................................................................................................................................................. 214
15.3.1 动态代理模式的基本介绍 ............................................................................................................................... 214
15.3.2 JDK 中生成代理对象的 API ........................................................................................................................................ 214
15.3.3 动态代理应用实例 .......................................................................................................................................... 214
15.4 CGLIB 代理 ............................................................................................................................................................................ 219
15.4.1 Cglib 代理模式的基本介绍 .............................................................................................................................. 219
15.4.2 Cglib 代理模式实现步骤 .................................................................................................................................. 220
15.4.3 Cglib 代理模式应用实例 .................................................................................................................................. 220
15.5 几种常见的代理模式介绍— 几种变体 ............................................................................................................................... 223
第 16 章 模板方法模式 ................................................................................................................................................................. 225
16.1 豆浆制作问题 ...................................................................................................................................................................... 225
16.2 模板方法模式基本介绍 ........................................................................................................................................................ 225
16.3 模板方法模式原理类图 ........................................................................................................................................................ 225
16.3.1 模板方法模式的原理类图 ............................................................................................................................... 225
16.4 模板方法模式解决豆浆制作问题 ......................................................................................................................................... 226
16.5 模板方法模式的钩子方法 .................................................................................................................................................... 230
16.6 模板方法模式在 SPRING 框架应用的源码分析 ..................................................................................................................... 232
16.7 模板方法模式的注意事项和细节 ......................................................................................................................................... 233
第 17 章 命 令 模式 ........................................................................................................................................................................ 234
17.1 智能生活项目需求 ............................................................................................................................................................... 234
17.2 命令模式基本介绍 ............................................................................................................................................................... 234
17.3 命令模式的原理类图 ........................................................................................................................................................... 235
17.4 命令模式解决智能生活项目 ................................................................................................................................................ 235
17.5 命令模式在 SPRING 框架 JDBCTEMPLATE 应用的源码分析 .................................................................................................... 247
17.6 命令模式的注意事项和细节 ................................................................................................................................................ 248
第 18 章 访问者模式 .................................................................................................................................................................... 249
18.1 测评系统的需求................................................................................................................................................................... 249
18.2 传统方式的问题分析 ........................................................................................................................................................... 249
18.3 访问者模式基本介绍 ........................................................................................................................................................... 249
18.4 访问者模式的原理类图 ........................................................................................................................................................ 250
18.5 访问者模式应用实例 ........................................................................................................................................................... 251
18.6 访问者模式的注意事项和细节 ............................................................................................................................................. 258
第 19 章 迭代器模式 .................................................................................................................................................................... 259
第 II页
更多 Java –大数据 –前端 –python 人工智能- 区块链 资料下载,可访问百度:尚硅谷官网
尚硅谷 Java 设计模式
19.1 看一个具体的需求 ............................................................................................................................................................... 259
19.2 传统的设计方案(类图) ....................................................................................................................................................................... 259
19.3 传统的方式的问题分析 ........................................................................................................................................................ 259
19.4 迭代器模式基本介绍 ........................................................................................................................................................... 259
19.5 迭代器模式的原理类图 ........................................................................................................................................................ 260
19.6 迭代器模式应用实例 ........................................................................................................................................................... 260
19.7 迭代器模式在 JDK-ARRAYLIST 集合应用的源码分析 .......................................................................................................... 272
19.8 迭代器模式的注意事项和细节 ............................................................................................................................................. 273
第 20 章 观察者模式 .................................................................................................................................................................... 275
20.1 天气预报项目需求,具体要求如下: .................................................................................................................................... 275
20.2 天气预报设计方案 1-普通方案 ............................................................................................................................................ 275
20.2.1 WeatherData 类 ................................................................................................................................................ 275
20.3 观察者模式原理................................................................................................................................................................... 280
20.4 观察者模式解决天气预报需求 ............................................................................................................................................. 280
20.4.1 类图说明......................................................................................................................................................... 280
20.4.2 代码实现......................................................................................................................................................... 281
20.4.3 观察者模式的好处 .......................................................................................................................................... 288
20.5 观察者模式在 JDK 应用的源码分析 ..................................................................................................................................... 288
第 21 章 中介者模式 .................................................................................................................................................................... 290
21.1 智能家庭项目 ...................................................................................................................................................................... 290
21.2 传统方案解决智能家庭管理问题 ......................................................................................................................................... 290
21.3 传统的方式的问题分析 ........................................................................................................................................................ 290
21.4 中介者模式基本介绍 ........................................................................................................................................................... 291
21.5 中介者模式的原理类图 ........................................................................................................................................................ 291
21.6 中介者模式应用实例-智能家庭管理 .................................................................................................................................... 291
21.7 中介者模式的注意事项和细节 ............................................................................................................................................. 301
第 22 章 备忘录模式 .................................................................................................................................................................... 302
22.1 游戏角色状态恢复问题 ........................................................................................................................................................ 302
22.2 传统方案解决游戏角色恢复 ................................................................................................................................................ 302
22.3 传统的方式的问题分析 ........................................................................................................................................................ 302
22.4 备忘录模式基本介绍 ........................................................................................................................................................... 302
22.5 备忘录模式的原理类图 ........................................................................................................................................................ 303
22.6 游戏角色恢复状态实例 ........................................................................................................................................................ 308
22.7 备忘录模式的注意事项和细节 ............................................................................................................................................. 313
第 23 章 解释器模式 .................................................................................................................................................................... 315
23.1 四则运算问题 ...................................................................................................................................................................... 315
更多 Java –大数据 –前端 –python 人工智能- 区块链 资料下载,可访问百度:尚硅谷官网
第 II页