《軟體秘笈:設計模式那點事》是2011年由電子工業出版社出版的書籍,作者是鄭阿奇。本書在件設計模式概述後,詮釋23個軟體設計模式,對各種軟體設計模式進行系統總結,是各種軟體設計模式綜合套用。
基本介紹
- 書名:軟體秘笈:設計模式那點事
- 作者:鄭阿奇
- ISBN:9787121147821
- 頁數:628頁
- 出版社:電子工業出版社
- 出版時間:2011年11月1日
- 叢書名:魅力·實踐·發現
內容簡介,目錄,
內容簡介
。每一種都以一個生活故事開始,然後是模式定義、模式分析、模式實現、設計原則和使用場合。模式實現通過Eclipse中的Java工程展開,採用軟體編程詮釋設計模式故事中的情節和操作,非常有趣。在這個基礎上,總結該軟體設計模式的設計原則,最後提出使用場合。
目錄
目 錄
1 設計模式概述 1
1.1 計算機軟體的發展現狀 2
1.2 引入設計模式的必要性 2
1.3 軟體設計遵循的基本原則 3
1.3.1 高內聚、低耦合 3
1.3.2 面向抽象編程 3
1.3.3 多用組合少用繼承 4
1.3.4 “開-閉”原則 4
1.4 設計模式概述 4
1.4.1 什麼是設計模式 4
1.4.2 為什麼需要設計模式 5
1.4.3 如何正確套用設計模式 5
1.5 設計模式的分類 5
1.5.1 創建型模式 6
1.5.2 結構型模式 6
1.5.3 行為型模式 6
1.6 學會歸納和總結 7
第一部分 創建型模式
2 曹操獻刀:工廠方法模式 11
2.1 三國故事之曹操獻刀 12
2.2 模式定義 13
2.3 故事中的模式分析 13
2.3.1 故事中的角色 13
2.3.2 抽象化分析方法 14
2.3.3 工廠方法模式的靜態建模 15
2.4 故事的工廠方法模式實現 17
2.4.1 建立產品 17
2.4.2 建立工廠 19
2.4.3 故事情節的歷史重現 21
2.4.4 用八星寶刀來考驗模式 22
2.5 設計原則 25
2.6 使用場合 28
2.7 本章要點 29
3 肯德基:抽象工廠模式 31
3.1 發生在肯德基的故事 32
3.2 模式定義 33
3.3 故事中的模式分析 33
3.3.1 故事中的角色 33
3.3.2 抽象化分析 34
3.3.3 抽象工廠模式的靜態建模 35
3.4 故事的抽象工廠模式實現 36
3.4.1 抽象食物的建立 36
3.4.2 建立不同食物的抽象基類 37
3.4.3 創建具體的食物 40
3.4.4 建立工廠 43
3.4.5 創建客戶類 45
3.4.6 故事情節的展現 48
3.5 設計原則 49
3.6 使用場合 50
3.7 本章要點 53
4 手機套餐:建造者模式 54
4.1 手機套餐 55
4.2 模式定義 56
4.3 故事中的模式分析 56
4.3.1 角色分析 56
4.3.2 建造者模式的靜態建模 57
4.4 模式實現 58
4.4.1 創建產品——手機套餐 59
4.4.2 建立抽象建造者 61
4.4.3 建立具體建造者 62
4.4.4 創建指導者 65
4.4.5 讓客戶訂購手機套餐 66
4.4.6 如何簡化建造者實現 68
4.5 設計原則 68
4.6 使用場合 70
4.7 本章要點 73
5 大學生初入社會:原型模式 75
5.1 大學生初入社會 76
5.2 模式定義 77
5.3 大學生故事的模式分析 78
5.3.1 故事情節分析 78
5.3.2 原型模式的靜態建模 78
5.4 大學生故事的原型模式實現 80
5.4.1 原型的建立 81
5.4.2 創建生成原型對象的工廠 84
5.4.3 大學生初入社會的生活展現 86
5.5 設計原則 88
5.6 使用場合 95
5.7 本章要點 96
6 課堂上互動:單例模式 98
6.1 課堂上發生的故事 99
6.2 模式定義 100
6.3 模式分析 101
6.4 模式實現 102
6.4.1 實現一:使用同步執行緒安全創建單例對象 102
6.4.2 實現二:創建一個類全局對象實例作為單例對象 106
6.4.3 提高:多例模式實現 107
6.5 設計原則 112
6.6 使用場合 112
6.7 本章要點 114
第二部分 結構型模式
7 電源轉換:適配器模式 117
7.1 生活中的適配器 118
7.2 模式定義 118
7.3 模式分析 119
7.3.1 適配器中的角色 119
7.3.2 靜態建模 119
7.4 模式實現 120
7.4.1 抽象電源建立 121
7.4.2 創建220V電源 122
7.4.3 創建12V電源 123
7.4.4 測試220V電源和12V電源 125
7.4.5 對象適配器實現 126
7.4.6 類適配器模式實現 129
7.5 設計原則 132
7.6 使用場合 133
7.7 本章要點 135
8 開關與電燈:橋接模式 137
8.1 開關與電燈 138
8.2 模式定義 139
8.3 一般化分析 139
8.4 一般化實現 140
8.4.1 建立抽象開關 141
8.4.2 電燈實現 142
8.4.3 客戶端測試 145
8.4.4 對於擴展功能的思考 146
8.5 橋接模式分析方法 147
8.6 開關與電燈的橋接模式實現 147
8.6.1 創建電燈接口 147
8.6.2 創建開關 148
8.6.3 電燈實現 151
8.6.4 客戶端測試 153
8.7 設計原則 155
8.8 使用場合 156
8.9 本章要點 157
9 公司層級結構:組合模式 159
9.1 公司層級結構 160
9.2 模式定義 160
9.3 一般化分析 161
9.4 一般化實現 162
9.4.1 創建普通員工 162
9.4.2 創建管理者 164
9.4.3 客戶端測試 168
9.4.4 系統結構的思考 171
9.5 組合模式分析方法 171
9.6 公司結構的組合模式實現 172
9.6.1 建立員工抽象 172
9.6.2 創建管理者 175
9.6.3 創建普通員工 177
9.6.4 客戶端測試 179
9.7 設計原則 182
9.8 使用場合 183
9.9 本章要點 184
10 染色饅頭:裝飾者模式 186
10.1 染色饅頭事件 187
10.2 模式定義 188
10.3 一般化分析 188
10.4 一般化實現 189
10.4.1 創建饅頭接口 189
10.4.2 正常饅頭 190
10.4.3 染色饅頭 193
10.4.4 甜饅頭 195
10.4.5 如何生產甜玉米饅頭 199
10.5 裝飾者模式分析方法 199
10.6 染色饅頭的裝飾者模式實現 200
10.6.1 創建抽象裝飾者 200
10.6.2 創建裝飾者 202
10.6.3 生產甜玉米饅頭 204
10.7 設計原則 206
10.8 使用場合 207
10.9 本章要點 209
11 美食天下:外觀模式 211
11.1 美食天下 212
11.2 模式定義 213
11.3 一般化分析 214
11.4 一般化實現 214
11.4.1 創建糖醋排骨接口 214
11.4.2 糖醋排骨實現 215
11.4.3 客戶端測試 216
11.5 外觀模式分析方法 218
11.5.1 讓廚師為我們做菜 218
11.5.2 外觀模式的靜態建模 218
11.6 糖醋排骨的外觀模式實現 219
11.6.1 建立外觀門面 219
11.6.2 客戶端測試 221
11.7 設計原則 222
11.8 使用場合 224
11.9 本章要點 227
12 五子棋遊戲:享元模式 229
12.1 五子棋遊戲 230
12.2 模式定義 231
12.3 模式分析 231
12.3.1 五子棋遊戲分析 231
12.3.2 靜態建模 232
12.4 模式實現 233
12.4.1 創建抽象棋子 233
12.4.2 棋子實現 234
12.4.3 創建棋子工廠 234
12.4.4 客戶端測試 236
12.4.5 如何實現棋子的位置 238
12.4.6 測試棋子的外蘊狀態 242
12.5 設計原則 244
12.6 使用場合 245
12.7 本章要點 247
13 紅酒經銷:代理模式 249
13.1 紅酒代理商 250
13.2 模式定義 250
13.3 模式分析 251
13.3.1 消費者購買行為分析 251
13.3.2 靜態建模 252
13.4 模式實現 252
13.4.1 創建紅酒生產廠商 253
13.4.2 到紅酒工廠購買紅酒 254
13.4.3 創建紅酒代理商 255
13.4.4 到紅酒代理商處購買紅酒 257
13.5 設計原則 258
13.6 使用場合 259
13.7 本章要點 265
第三部分 行為型模式
14 學生生病了:責任鏈模式 269
14.1 學生生病了 270
14.2 模式定義 271
14.3 普通抽象化分析 271
14.3.1 學生請假流程分析 271
14.3.2 抽象化靜態建模 272
14.4 普通抽象化實現 273
14.4.1 學生請假實現 273
14.4.2 創建抽象請假訊息處理者 275
14.4.3 請假處理者具體實現 277
14.4.4 客戶端測試 279
14.4.5 如何面對變化 282
14.4.6 使用外觀封裝變化部分 283
14.5 責任鏈模式分析方法 288
14.5.1 如何實現訊息傳遞 288
14.5.2 責任鏈模式靜態建模 288
14.6 請假流程的責任鏈模式實現 289
14.6.1 抽象化修改 289
14.6.2 完善具體訊息處理者 291
14.6.3 在外觀中設定訊息處理責任鏈 292
14.6.4 客戶端測試 296
14.7 設計原則 296
14.8 使用場合 297
14.9 本章要點 299
15 郵局:命令模式 301
15.1 生活中的郵局 302
15.2 模式定義 303
15.3 模式分析 303
15.3.1 郵局例子分析 303
15.3.2 靜態建模 303
15.4 模式實現 304
15.4.1 創建訊息接收者 305
15.4.2 創建中間角色郵局 305
15.4.3 創建訊息傳送者 307
15.4.4 讓郵局開始工作 308
15.4.5 最佳化我們的設計 310
15.5 設計原則 312
15.6 使用場合 313
15.7 本章要點 316
16 創建自己的語言:解釋器模式 318
16.1 創建自己的語言解釋器 319
16.2 模式定義 320
16.3 模式分析 320
16.3.1 “myida”語言分析 320
16.3.2 “myida”語言解釋器原理 321
16.4 模式實現 323
16.4.1 創建上下文環境 323
16.4.2 創建解析表達式 326
16.4.3 讓“myida”語言解釋器開始工作 336
16.5 設計原則 338
16.6 使用場合 339
16.7 本章要點 341
17 循環遍歷:疊代器模式 343
17.1 讓疊代器代替for循環 344
17.2 模式定義 345
17.3 模式分析 345
17.3.1 如何遍歷集合對象 345
17.3.2 疊代器模式靜態建模 346
17.4 模式實現 347
17.4.1 人員信息實現 348
17.4.2 人員集合實現 349
17.4.3 疊代器實現 352
17.4.4 讓疊代器遍歷集合對象 354
17.4.5 疊代器如何面對變化 357
17.4.6 客戶端發生哪些變化 360
17.5 設計原則 362
17.6 使用場合 362
17.7 本章要點 364
18 多人聊天室:中介者模式 366
18.1 多人聊天室 367
18.2 模式定義 368
18.3 模式分析 368
18.3.1 多人聊天室結構分析 368
18.3.2 靜態建模 369
18.4 模式實現 370
18.4.1 創建用戶接口 370
18.4.2 創建中介者 371
18.4.3 創建用戶 373
18.4.4 運行多人聊天室 377
18.5 設計原則 380
18.6 使用場合 380
18.7 本章要點 382
19 過關類遊戲:備忘錄模式 384
19.1 過關類遊戲 385
19.2 模式定義 385
19.3 模式分析 386
19.3.1 備忘錄模式特點 386
19.3.2 備忘錄模式靜態建模 386
19.4 模式實現 387
19.4.1 白箱備忘錄模式實現 388
19.4.2 黑箱備忘錄模式實現 396
19.5 設計原則 404
19.6 使用場合 405
19.7 本章要點 407
20 高溫預警:觀察者模式 409
20.1 高溫預警系統 410
20.2 模式定義 411
20.3 模式分析 411
20.3.1 高溫預警過程分析 411
20.3.2 靜態建模 411
20.4 模式實現 412
20.4.1 創建抽象角色 413
20.4.2 具體主題實現 415
20.4.3 具體觀察者實現 419
20.4.4 讓系統開始運行 421
20.5 設計原則 423
20.6 使用場合 423
20.7 本章要點 426
21 文檔編輯模式切換:狀態模式 428
21.1 文檔編輯器中的模式切換 429
21.2 模式定義 430
21.3 模式分析 430
21.4 模式實現 431
21.4.1 創建空白的上下文環境 431
21.4.2 創建狀態接口 431
21.4.3 完善上下文內容 433
21.4.4 創建具體狀態 434
21.4.5 客戶端測試 437
21.5 設計原則 440
21.6 使用場合 440
21.7 本章要點 442
22 商場促銷:策略模式 443
22.1 商場促銷商品 444
22.2 模式定義 445
22.3 模式分析 445
22.3.1 商品促銷中的策略分析 445
22.3.2 策略模式靜態建模 446
22.4 模式實現 446
22.4.1 創建策略接口 447
22.4.2 創建具體策略 448
22.4.3 創建上下文環境 450
22.4.4 消費者購物消費 451
22.4.5 策略模式與條件判斷的比較 454
22.5 設計原則 456
22.6 使用場合 456
22.7 本章要點 459
23 生活行為:模板方法模式 461
23.1 每日的生活行為 462
23.2 模式定義 463
23.3 模式分析 463
23.3.1 生活行為分析 463
23.3.2 靜態建模 464
23.4 模式實現 465
23.4.1 建立算法骨架 465
23.4.2 創建具體實現 467
23.4.3 客戶端測試 469
23.5 設計原則 471
23.6 使用場合 472
23.7 本章要點 475
24 公司層級結構:訪問者模式 477
24.1 公司層級結構 478
24.2 模式定義 479
24.3 模式分析 479
24.3.1 組合模式回顧 479
24.3.2 訪問者模式分析 480
24.3.3 訪問者模式靜態建模 481
24.4 模式實現 483
24.4.1 員工實現 483
24.4.2 訪問者實現 488
24.4.3 讓員工接收訪問者 490
24.4.4 客戶端測試 491
24.4.5 擴展的思考 494
24.5 設計原則 498
24.6 使用場合 499
24.7 本章要點 502
25 設計模式總結 504
25.1 為什麼學習設計模式 505
25.1.1 讓工作變得輕鬆 505
25.1.2 讓程式變得優雅 507
25.1.3 要學會設計原則 507
25.2 設計模式六大原則 509
25.2.1 “開-閉”原則(OCP) 509
25.2.2 單一職責原則(SRP) 519
25.2.3 依賴倒置原則(DIP) 527
25.2.4 接口隔離原則(ISP) 536
25.2.5 里氏替換原則(LSP) 543
25.2.6 迪米特法則(LoD) 544
25.3 勤于思考,善於總結 553
25.3.1 專心、用心、信心 553
25.3.2 做一個有思想的人 554
25.4 實踐出真知 554
26 MVC設計實踐 556
26.1 讓你的思維活躍起來 557
26.2 如何設計MVC架構 557
26.3 第一個MVC框架——Joker MVC 558
26.3.1 環境介紹 558
26.3.2 MVC起航 558
26.3.3 Joker MVC架構分析 563
26.3.4 Joker MVC架構實現 566
26.3.5 發布joker-1.0部署測試 599