當前位置:菜譜大全網 - 美食做法 - 軟件秘笈:設計模式那點事的目錄

軟件秘笈:設計模式那點事的目錄

目 錄

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