本书聚焦于Go语言设计模式的知识与应用。全书共6章,分别为设计模式入门、创建型设计模式、结构型设计模式、行为型设计模式、设计模式扩展、设计模式与软件架构。本书简洁而不失技术深度,内容覆盖Go语言的主流设计模式和软件架构,以极简的文字介绍了复杂的案例,是学习Go语言设计模式和软件架构的实用教程。
熟悉C/Java/PHP/Python/Go/Rust/Flutter等流行编程语言实战开发,专注最新编程语言的实践开发,Web应用实战开发,算法实践研究
第1章 设计模式入门 / 1
1.1 设计模式介绍 / 1
1.1.1 初识设计模式 / 1
1.1.2 怎样使用设计模式 / 2
1.2 UML基础知识 / 3
1.2.1 什么是UML / 3
1.2.2 UML事物 / 6
1.2.3 UML关系 / 8
1.2.4 UML图 / 9
1.3 设计模式的六大原则 / 19
1.4 回顾与启示 / 21
第2章 创建型设计模式 / 22
2.1 单例模式 / 22
2.1.1 单例模式简介 / 22
2.1.2 Go语言实战 / 26
2.1.3 优缺点分析 / 27
2.2 工厂方法模式 / 28
2.2.1 工厂方法模式简介 / 28
2.2.2 Go语言实战 / 30
2.2.3 优缺点分析 / 34
2.3 抽象工厂模式 / 35
2.3.1 抽象工厂模式简介 / 35
2.3.2 Go语言实战 / 37
2.3.3 优缺点分析 / 43
2.4 生成器模式 / 44
2.4.1 生成器模式简介 / 44
2.4.2 Go语言实战 / 47
2.4.3 优缺点分析 / 51
2.5 原型模式 / 52
2.5.1 原型模式简介 / 52
2.5.2 Go语言实战 / 54
2.5.3 优缺点分析 / 57
2.6 对象池模式 / 58
2.6.1 对象池模式简介 / 58
2.6.2 Go语言实战 / 61
2.6.3 优缺点分析 / 64
2.7 回顾与启示 / 65
第3章 结构型设计模式 / 66
3.1 组合模式 / 66
3.1.1 组合模式简介 / 66
3.1.2 Go语言实战 / 70
3.1.3 优缺点分析 / 73
3.2 适配器模式 / 73
3.2.1 适配器模式简介 / 73
3.2.2 Go语言实战 / 78
3.2.3 优缺点分析 / 80
3.3 桥接模式 / 81
3.3.1 桥接模式简介 / 81
3.3.2 Go语言实战 / 85
3.3.3 优缺点分析 / 88
3.4 装饰器模式 / 89
3.4.1 装饰器模式简介 / 89
3.4.2 Go语言实战 / 93
3.4.3 优缺点分析 / 95
3.5 外观模式 / 96
3.5.1 外观模式简介 / 96
3.5.2 Go语言实战 / 99
3.5.3 优缺点分析 / 104
3.6 享元模式 / 105
3.6.1 享元模式简介 / 105
3.6.2 Go语言实战 / 108
3.6.3 优缺点分析 / 112
3.7 代理模式 / 113
3.7.1 代理模式简介 / 113
3.7.2 Go语言实战 / 116
3.7.3 优缺点分析 / 119
3.8 回顾与启示 / 120
第4章 行为型设计模式 / 121
4.1 策略模式 / 121
4.1.1 策略模式简介 / 121
4.1.2 Go语言实战 / 124
4.1.3 优缺点分析 / 128
4.2 责任链模式 / 129
4.2.1 责任链模式简介 / 129
4.2.2 Go语言实战 / 132
4.2.3 优缺点分析 / 136
4.3 命令模式 / 137
4.3.1 命令模式简介 / 137
4.3.2 Go语言实战 / 141
4.3.3 优缺点分析 / 144
4.4 迭代器模式 / 144
4.4.1 迭代器模式简介 / 144
4.4.2 Go语言实战 / 148
4.4.3 优缺点分析 / 151
4.5 中介者模式 / 151
4.5.1 中介者模式简介 / 151
4.5.2 Go语言实战 / 155
4.5.3 优缺点分析 / 159
4.6 备忘录模式 / 160
4.6.1 备忘录模式简介 / 160
4.6.2 Go语言实战 / 163
4.6.3 优缺点分析 / 166
4.7 观察者模式 / 167
4.7.1 观察者模式简介 / 167
4.7.2 Go语言实战 / 170
4.7.3 优缺点分析 / 173
4.8 状态模式 / 174
4.8.1 状态模式简介 / 174
4.8.2 Go语言实战 / 177
4.8.3 优缺点分析 / 181
4.9 模板方法模式 / 181
4.9.1 模板方法模式简介 / 181
4.9.2 Go语言实战 / 185
4.9.3 优缺点分析 / 188
4.10 访问者模式 / 188
4.10.1 访问者模式简介 / 188
4.10.2 Go语言实战 / 193
4.10.3 优缺点分析 / 198
4.11 回顾与启示 / 198
第5章 设计模式扩展 / 199
5.1 空对象模式 / 199
5.1.1 空对象模式简介 / 199
5.1.2 Go语言实战 / 202
5.1.3 优缺点分析 / 205
5.2 规格模式 / 205
5.2.1 规格模式简介 / 205
5.2.2 Go语言实战 / 210
5.2.3 优缺点分析 / 215
5.3 领域驱动设计 / 215
5.3.1 领域驱动设计简介 / 215
5.3.2 Go语言实战 / 225
5.3.3 优缺点分析 / 239
5.4 回顾与启示 / 239
第6章 设计模式与软件架构 / 240
6.1 软件架构 / 240
6.1.1 软件架构简介 / 240
6.1.2 软件架构与设计模式的区别 / 243
6.1.3 如何选择软件架构 / 246
6.2 MVC架构 / 247
6.2.1 MVC架构简介 / 247
6.2.2 Go语言实战 / 249
6.2.3 优缺点分析 / 255
6.3 RPC架构 / 256
6.3.1 RPC架构简介 / 256
6.3.2 Go语言实战 / 257
6.3.3 优缺点分析 / 265
6.4 三层架构 / 266
6.4.1 三层架构简介 / 266
6.4.2 Go语言实战 / 267
6.4.3 优缺点分析 / 277
6.5 微服务架构 / 278
6.5.1 微服务架构简介 / 278
6.5.2 Go语言实战 / 281
6.5.3 优缺点分析 / 289
6.6 事件驱动架构 / 291
6.6.1 事件驱动架构简介 / 291
6.6.2 Go语言实战 / 292
6.6.3 优缺点分析 / 299
6.7 回顾与启示 / 300