本書聚焦于Go語言設(shè)計(jì)模式的知識(shí)與應(yīng)用。全書共6章,分別為設(shè)計(jì)模式入門、創(chuàng)建型設(shè)計(jì)模式、結(jié)構(gòu)型設(shè)計(jì)模式、行為型設(shè)計(jì)模式、設(shè)計(jì)模式擴(kuò)展、設(shè)計(jì)模式與軟件架構(gòu)。本書簡潔而不失技術(shù)深度,內(nèi)容覆蓋Go語言的主流設(shè)計(jì)模式和軟件架構(gòu),以極簡的文字介紹了復(fù)雜的案例,是學(xué)習(xí)Go語言設(shè)計(jì)模式和軟件架構(gòu)的實(shí)用教程。
熟悉C/Java/PHP/Python/Go/Rust/Flutter等流行編程語言實(shí)戰(zhàn)開發(fā),專注最新編程語言的實(shí)踐開發(fā),Web應(yīng)用實(shí)戰(zhàn)開發(fā),算法實(shí)踐研究
第1章 設(shè)計(jì)模式入門 / 1
1.1 設(shè)計(jì)模式介紹 / 1
1.1.1 初識(shí)設(shè)計(jì)模式 / 1
1.1.2 怎樣使用設(shè)計(jì)模式 / 2
1.2 UML基礎(chǔ)知識(shí) / 3
1.2.1 什么是UML / 3
1.2.2 UML事物 / 6
1.2.3 UML關(guān)系 / 8
1.2.4 UML圖 / 9
1.3 設(shè)計(jì)模式的六大原則 / 19
1.4 回顧與啟示 / 21
第2章 創(chuàng)建型設(shè)計(jì)模式 / 22
2.1 單例模式 / 22
2.1.1 單例模式簡介 / 22
2.1.2 Go語言實(shí)戰(zhàn) / 26
2.1.3 優(yōu)缺點(diǎn)分析 / 27
2.2 工廠方法模式 / 28
2.2.1 工廠方法模式簡介 / 28
2.2.2 Go語言實(shí)戰(zhàn) / 30
2.2.3 優(yōu)缺點(diǎn)分析 / 34
2.3 抽象工廠模式 / 35
2.3.1 抽象工廠模式簡介 / 35
2.3.2 Go語言實(shí)戰(zhàn) / 37
2.3.3 優(yōu)缺點(diǎn)分析 / 43
2.4 生成器模式 / 44
2.4.1 生成器模式簡介 / 44
2.4.2 Go語言實(shí)戰(zhàn) / 47
2.4.3 優(yōu)缺點(diǎn)分析 / 51
2.5 原型模式 / 52
2.5.1 原型模式簡介 / 52
2.5.2 Go語言實(shí)戰(zhàn) / 54
2.5.3 優(yōu)缺點(diǎn)分析 / 57
2.6 對象池模式 / 58
2.6.1 對象池模式簡介 / 58
2.6.2 Go語言實(shí)戰(zhàn) / 61
2.6.3 優(yōu)缺點(diǎn)分析 / 64
2.7 回顧與啟示 / 65
第3章 結(jié)構(gòu)型設(shè)計(jì)模式 / 66
3.1 組合模式 / 66
3.1.1 組合模式簡介 / 66
3.1.2 Go語言實(shí)戰(zhàn) / 70
3.1.3 優(yōu)缺點(diǎn)分析 / 73
3.2 適配器模式 / 73
3.2.1 適配器模式簡介 / 73
3.2.2 Go語言實(shí)戰(zhàn) / 78
3.2.3 優(yōu)缺點(diǎn)分析 / 80
3.3 橋接模式 / 81
3.3.1 橋接模式簡介 / 81
3.3.2 Go語言實(shí)戰(zhàn) / 85
3.3.3 優(yōu)缺點(diǎn)分析 / 88
3.4 裝飾器模式 / 89
3.4.1 裝飾器模式簡介 / 89
3.4.2 Go語言實(shí)戰(zhàn) / 93
3.4.3 優(yōu)缺點(diǎn)分析 / 95
3.5 外觀模式 / 96
3.5.1 外觀模式簡介 / 96
3.5.2 Go語言實(shí)戰(zhàn) / 99
3.5.3 優(yōu)缺點(diǎn)分析 / 104
3.6 享元模式 / 105
3.6.1 享元模式簡介 / 105
3.6.2 Go語言實(shí)戰(zhàn) / 108
3.6.3 優(yōu)缺點(diǎn)分析 / 112
3.7 代理模式 / 113
3.7.1 代理模式簡介 / 113
3.7.2 Go語言實(shí)戰(zhàn) / 116
3.7.3 優(yōu)缺點(diǎn)分析 / 119
3.8 回顧與啟示 / 120
第4章 行為型設(shè)計(jì)模式 / 121
4.1 策略模式 / 121
4.1.1 策略模式簡介 / 121
4.1.2 Go語言實(shí)戰(zhàn) / 124
4.1.3 優(yōu)缺點(diǎn)分析 / 128
4.2 責(zé)任鏈模式 / 129
4.2.1 責(zé)任鏈模式簡介 / 129
4.2.2 Go語言實(shí)戰(zhàn) / 132
4.2.3 優(yōu)缺點(diǎn)分析 / 136
4.3 命令模式 / 137
4.3.1 命令模式簡介 / 137
4.3.2 Go語言實(shí)戰(zhàn) / 141
4.3.3 優(yōu)缺點(diǎn)分析 / 144
4.4 迭代器模式 / 144
4.4.1 迭代器模式簡介 / 144
4.4.2 Go語言實(shí)戰(zhàn) / 148
4.4.3 優(yōu)缺點(diǎn)分析 / 151
4.5 中介者模式 / 151
4.5.1 中介者模式簡介 / 151
4.5.2 Go語言實(shí)戰(zhàn) / 155
4.5.3 優(yōu)缺點(diǎn)分析 / 159
4.6 備忘錄模式 / 160
4.6.1 備忘錄模式簡介 / 160
4.6.2 Go語言實(shí)戰(zhàn) / 163
4.6.3 優(yōu)缺點(diǎn)分析 / 166
4.7 觀察者模式 / 167
4.7.1 觀察者模式簡介 / 167
4.7.2 Go語言實(shí)戰(zhàn) / 170
4.7.3 優(yōu)缺點(diǎn)分析 / 173
4.8 狀態(tài)模式 / 174
4.8.1 狀態(tài)模式簡介 / 174
4.8.2 Go語言實(shí)戰(zhàn) / 177
4.8.3 優(yōu)缺點(diǎn)分析 / 181
4.9 模板方法模式 / 181
4.9.1 模板方法模式簡介 / 181
4.9.2 Go語言實(shí)戰(zhàn) / 185
4.9.3 優(yōu)缺點(diǎn)分析 / 188
4.10 訪問者模式 / 188
4.10.1 訪問者模式簡介 / 188
4.10.2 Go語言實(shí)戰(zhàn) / 193
4.10.3 優(yōu)缺點(diǎn)分析 / 198
4.11 回顧與啟示 / 198
第5章 設(shè)計(jì)模式擴(kuò)展 / 199
5.1 空對象模式 / 199
5.1.1 空對象模式簡介 / 199
5.1.2 Go語言實(shí)戰(zhàn) / 202
5.1.3 優(yōu)缺點(diǎn)分析 / 205
5.2 規(guī)格模式 / 205
5.2.1 規(guī)格模式簡介 / 205
5.2.2 Go語言實(shí)戰(zhàn) / 210
5.2.3 優(yōu)缺點(diǎn)分析 / 215
5.3 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) / 215
5.3.1 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)簡介 / 215
5.3.2 Go語言實(shí)戰(zhàn) / 225
5.3.3 優(yōu)缺點(diǎn)分析 / 239
5.4 回顧與啟示 / 239
第6章 設(shè)計(jì)模式與軟件架構(gòu) / 240
6.1 軟件架構(gòu) / 240
6.1.1 軟件架構(gòu)簡介 / 240
6.1.2 軟件架構(gòu)與設(shè)計(jì)模式的區(qū)別 / 243
6.1.3 如何選擇軟件架構(gòu) / 246
6.2 MVC架構(gòu) / 247
6.2.1 MVC架構(gòu)簡介 / 247
6.2.2 Go語言實(shí)戰(zhàn) / 249
6.2.3 優(yōu)缺點(diǎn)分析 / 255
6.3 RPC架構(gòu) / 256
6.3.1 RPC架構(gòu)簡介 / 256
6.3.2 Go語言實(shí)戰(zhàn) / 257
6.3.3 優(yōu)缺點(diǎn)分析 / 265
6.4 三層架構(gòu) / 266
6.4.1 三層架構(gòu)簡介 / 266
6.4.2 Go語言實(shí)戰(zhàn) / 267
6.4.3 優(yōu)缺點(diǎn)分析 / 277
6.5 微服務(wù)架構(gòu) / 278
6.5.1 微服務(wù)架構(gòu)簡介 / 278
6.5.2 Go語言實(shí)戰(zhàn) / 281
6.5.3 優(yōu)缺點(diǎn)分析 / 289
6.6 事件驅(qū)動(dòng)架構(gòu) / 291
6.6.1 事件驅(qū)動(dòng)架構(gòu)簡介 / 291
6.6.2 Go語言實(shí)戰(zhàn) / 292
6.6.3 優(yōu)缺點(diǎn)分析 / 299
6.7 回顧與啟示 / 300