本書專門介紹Android源代碼的設計模式, 主要講解面向?qū)ο蟮牧笤瓌t、主流的設計模式以及MVC和MVP模式。本書的主要內(nèi)容為: 優(yōu)化代碼的第一步、開閉原則、里氏替換原則、依賴倒置原則、接口隔離原則、迪米特原則、單例模式、Builder模式、原型模式、工廠方法模式、抽象工廠模式、策略模式、狀態(tài)模式、責任鏈模式、解釋器模式、命令模式、觀察者模式、備忘錄模式、迭代器模式、模板方法模式、訪問者模式、中介者模式、代理模式、組合模式、適配器模式、裝飾模式、享元模式、外觀模式、橋接模式, 以及MVC的介紹與實戰(zhàn)和MVP應用架構模式。每個章節(jié)都對某個模式做了深入分析, 并且會對模式相關的技術點進行深入拓展, 讓讀者在掌握模式的同時學習到Android中的一些重要知識, 通過實戰(zhàn)幫助讀者達到學以致用的目的, 且能夠?qū)⒛J竭\用于項目中, 開發(fā)出高質(zhì)量的程序。
第1章 走向靈活軟件之路——
面向?qū)ο蟮牧笤瓌t 1
1.1 優(yōu)化代碼的第一步——單一職責原則 1
1.2 讓程序更穩(wěn)定、更靈活——開閉原則 5
1.3 構建擴展性更好的系統(tǒng)——
里氏替換原則 12
1.4 讓項目擁有變化的能力——
依賴倒置原則 14
1.5 系統(tǒng)有更高的靈活性——
接口隔離原則 16
1.6 更好的可擴展性——迪米特原則 19
1.7 小結 23
第2章 應用最廣的模式——單例模式 24
2.1 單例模式介紹 24
2.2 單例模式的定義 24
2.3 單例模式的使用場景 24
2.4 單例模式UML類圖 24
2.5 單例模式的簡單示例 25
2.6 單例模式的其他實現(xiàn)方式 27
2.6.1 懶漢模式 27
2.6.2 Double Check Lock (DCL)實現(xiàn)
單例 27
2.6.3 靜態(tài)內(nèi)部類單例模式 28
2.6.4 枚舉單例 29
2.6.5 使用容器實現(xiàn)單例模式 30
2.7 Android源碼中的單例模式 30
2.8 無名英雄——深入理解LayoutInflater 34
2.9 運用單例模式 41
2.10 小結 43
第3章 自由擴展你的項目——
Builder模式 44
3.1 Builder模式介紹 44
3.2 Builder模式的定義 44
3.3 Builder模式的使用場景 44
3.4 Builder模式的UML類圖 44
3.5 Builder模式的簡單實現(xiàn) 45
3.6 Android源碼中的Builder模式實現(xiàn) 47
3.7 深入了解WindowManager 53
3.8 Builder模式實戰(zhàn) 60
3.9 小結 65
第4章 使程序運行更高效——原型模式 66
4.1 原型模式介紹 66
4.2 原型模式的定義 66
4.3 原型模式的使用場景 66
4.4 原型模式的UML類圖 66
4.5 原型模式的簡單實現(xiàn) 67
4.6 淺拷貝和深拷貝 69
4.7 Android源碼中的原型模式實現(xiàn) 72
4.8 Intent的查找與匹配 74
4.8.1 App信息表的構建 74
4.8.2 精確匹配 80
4.9 原型模式實戰(zhàn) 83
4.10 小結 85
第5章 應用最廣泛的模式——
工廠方法模式 87
5.1 工廠方法模式介紹 87
5.2 工廠方法模式的定義 87
5.3 工廠方法模式的使用場景 87
5.4 工廠方法模式的UML類圖 87
5.5 模式的簡單實現(xiàn) 90
5.6 Android源碼中的工廠方法模式實現(xiàn) 93
5.7 關于onCreate方法 95
5.8 工廠方法模式實戰(zhàn) 102
5.9 小結 105
第6章 創(chuàng)建型設計模式——
抽象工廠模式 106
6.1 抽象工廠模式介紹 106
6.2 抽象工廠模式的定義 106
6.3 抽象工廠模式的使用場景 106
6.4 抽象工廠模式的UML類圖 106
6.5 抽象工廠方法模式的簡單實現(xiàn) 109
6.6 Android源碼中的抽象工廠方法模式
實現(xiàn) 112
6.7 抽象工廠模式在Android開發(fā)中的
應用 116
6.8 小結 120
第7章 時勢造英雄——策略模式 121
7.1 策略模式介紹 121
7.2 策略模式的定義 121
7.3 策略模式的使用場景 121
7.4 策略模式的UML類圖 122
7.5 策略模式的簡單實現(xiàn) 122
7.6 Android源碼中的策略模式實現(xiàn) 127
7.6.1 時間插值器 127
7.6.2 動畫中的時間插值器 128
7.7 深入屬性動畫 132
7.7.1 屬性動畫體系的總體設計 132
7.7.2 屬性動畫的核心類介紹 132
7.7.3 基本使用 133
7.7.4 流程圖 134
7.7.5 詳細設計 135
7.7.6 核心原理分析 135
7.8 策略模式實戰(zhàn)應用 146
7.9 小結 148
第8章 隨遇而安——狀態(tài)模式 149
8.1 狀態(tài)模式介紹 149
8.2 狀態(tài)模式的定義 149
8.3 狀態(tài)模式的使用場景 149
8.4 狀態(tài)模式的UML類圖 149
8.5 狀態(tài)模式的簡單示例 150
8.6 Wi-Fi管理中的狀態(tài)模式 154
8.7 狀態(tài)模式實戰(zhàn) 163
8.8 小結 168
第9章 使編程更有靈活性——
責任鏈模式 169
9.1 責任鏈模式介紹 169
9.2 責任鏈模式的定義 169
9.3 責任鏈模式的使用場景 169
9.4 責任鏈模式的UML類圖 169
9.5 責任鏈模式的簡單實現(xiàn) 174
9.6 Android源碼中的責任鏈模式實現(xiàn) 177
9.7 責任鏈模式實戰(zhàn) 182
9.8 小結 185
第10章 化繁為簡的翻譯機——
解釋器模式 186
10.1 解釋器模式介紹 186
10.2 解釋器模式的定義 186
10.3 解釋器模式的使用場景 187
10.4 解釋器模式的UML類圖 188
10.5 解釋器模式的簡單實現(xiàn) 189
10.6 Android源碼中的解釋器模式實現(xiàn) 193
10.7 關于PackageManagerService 199
10.8 小結 207
第11章 讓程序暢通執(zhí)行——命令模式 208
11.1 命令模式介紹 208
11.2 命令模式的定義 208
11.3 命令模式的使用場景 208
11.4 命令模式的UML類圖 208
11.5 命令模式的簡單實現(xiàn) 211
11.6 Android源碼中的命令模式實現(xiàn) 215
11.7 Android事件輸入系統(tǒng)介紹 218
11.8 命令模式實戰(zhàn) 220
11.9 小結 227
第12章 解決解耦的鑰匙——
觀察者模式 228
12.1 觀察者模式介紹 228
12.2 觀察者模式的定義 228
12.3 觀察者模式的使用場景 228
12.4 觀察者模式的UML類圖 228
12.5 觀察者模式的簡單實現(xiàn) 229
12.6 Android源碼分析 231
12.7 觀察者模式的深入拓展 234
12.8 實戰(zhàn) 242
12.9 小結 249
第13章 編程中的“后悔藥”——
備忘錄模式 251
13.1 備忘錄模式介紹 251
13.2 備忘錄模式的定義 251
13.3 備忘錄模式的使用場景 251
13.4 備忘錄模式的UML類圖 251
13.5 備忘錄模式的簡單示例 252
13.6 Android源碼中的備忘錄模式 254
13.7 深度拓展 261
13.7.1 onSaveInstanceState調(diào)用的
時機 261
13.7.2 使用V4包存儲狀態(tài)的bug 261
13.8 實戰(zhàn) 264
13.9 小結 271
第14章 解決問題的“第三者”——
迭代器模式 272
14.1 迭代器模式介紹 272
14.2 迭代器模式的定義 272
14.3 迭代器模式的使用場景 272
14.4 迭代器模式的UML類圖 272
14.5 模式的簡單實現(xiàn) 275
14.6 Android源碼中的模式實現(xiàn) 279
14.7 小結 281
第15章 抓住問題核心——
模板方法模式 282
15.1 模板方法模式介紹 282
15.2 模板方法模式的定義 282
15.3 模板方法模式的使用場景 282
15.4 模板方法模式的UML類圖 282
15.5 模板方法模式的簡單示例 283
15.6 Android源碼中的模板方法模式 285
15.7 深度拓展 287
15.8 模板方法實戰(zhàn) 300
15.9 小結 303
第16章 訪問者模式 305
16.1 訪問者模式介紹 305
16.2 訪問者模式的定義 305
16.3 訪問者模式的使用場景 305
16.4 訪問者模式的UML類圖 305
16.5 訪問者模式的簡單示例 306
16.6 Android源碼中的模式 311
16.7 訪問者模式實戰(zhàn) 314
16.8 小結 320
第17章 “和事佬”——中介者模式 321
17.1 中介者模式介紹 321
17.2 中介者模式的定義 322
17.3 中介者模式的使用場景 322
17.4 中介者模式的UML類圖 322
17.5 中介者模式的簡單實現(xiàn) 324
17.6 Android源碼中的中介者模式實現(xiàn) 328
17.7 中介者模式實戰(zhàn) 330
17.8 小結 333
第18章 編程好幫手——代理模式 334
18.1 代理模式介紹 334
18.2 代理模式的定義 334
18.3 代理模式的使用場景 334
18.4 代理模式的UML類圖 334
18.5 代理模式的簡單實現(xiàn) 336
18.6 Android源碼中的代理模式實現(xiàn) 340
18.7 Android中的Binder跨進程通信機制
與AIDL 344
18.8 代理模式實戰(zhàn) 355
18.9 小結 359
第19章 物以類聚——組合模式 360
19.1 組合模式介紹 360
19.2 組合模式的定義 361
19.3 組合模式的使用場景 361
19.4 組合模式的UML類圖 361
19.5 組合模式的簡單實現(xiàn) 367
19.6 Android源碼中的模式實現(xiàn) 371
19.7 為什么ViewGroup有容器的功能 372
19.8 小結 374
第20章 得心應手的“粘合劑”——適配器
模式 375
20.1 適配器模式介紹 375
20.2 適配器模式的定義 375
20.3 適配器模式的使用場景 375
20.4 適配器模式的UML類圖 375
20.5 適配器模式應用的簡單示例 376
20.5.1 類適配器模式 376
20.5.2 對象適配器模式 377
20.6 Android源碼中的適配器模式 379
20.7 深度拓展 385
20.8 實戰(zhàn)演示 398
20.9 小結 407
第21章 裝飾模式 408
21.1 裝飾模式介紹 408
21.2 裝飾模式的定義 408
21.3 裝飾模式的使用場景 408
21.4 裝飾模式的UML類圖 408
21.5 模式的簡單實現(xiàn) 411
21.6 Android源碼中的模式實現(xiàn) 413
21.7 Context與ContextImpl 415
21.8 模式實戰(zhàn) 423
21.9 小結 424
第22章 對象共享,避免創(chuàng)建多對象——
享元模式 425
22.1 享元模式介紹 425
22.2 享元模式定義 425
22.3 享元模式的使用場景 425
22.4 享元模式的UML類圖 425
22.5 享元模式的簡單示例 426
22.6 Android源碼中的享元模式 429
22.7 深度拓展 434
22.7.1 深入了解Android的消息
機制 434
22.7.2 子線程中創(chuàng)建Handler為何會拋出異!443
22.8 小結 444
第23章 統(tǒng)一編程接口——外觀模式 445
23.1 外觀模式介紹 445
23.2 外觀模式定義 445
23.3 外觀模式的使用場景 445
23.4 外觀模式的UML類圖 445
23.5 外觀模式的簡單示例 446
23.6 Android源碼中的外觀模式 448
23.7 深度拓展 452
23.7.1 Android資源的加載與匹配 452
23.7.2 動態(tài)加載框架的實現(xiàn) 459
23.8 外觀模式實戰(zhàn) 466
23.9 小結 468
第24章 連接兩地的交通樞鈕——
橋接模式 470
24.1 橋接模式介紹 470
24.2 橋接模式的定義 470
24.3 橋接模式的使用場景 470
24.4 橋接模式的UML類圖 470
24.5 橋接模式的簡單實現(xiàn) 472
24.6 Android源碼中的橋接模式實現(xiàn) 475
24.7 關于WindowManagerService 476
24.8 橋接模式實戰(zhàn) 484
24.9 小結 487
第25章 MVC的介紹與實戰(zhàn) 488
25.1 MVC的歷史與結構的演化 488
25.2 MVC的應用淺析 494
25.3 MVC在Android中的實現(xiàn) 499
25.4 MVC框架模式與設計模式 503
第26章 MVP應用架構模式 504
26.1 MVP模式介紹 504
26.2 MVP模式的三個角色 505
26.3 NavigationView中的MVP模式 505
26.4 MVP的實現(xiàn) 513
26.5 MVP與Activity、Fragment的生命
周期 517
第27章 MVVM應用淺析 520
27.1 MVVM模式介紹 520
27.2 MVVM的基本結構 521
27.3 View與ViewModel之間的交互 522
27.4 MVVM在Android中的應用與DataBinding使用淺析 523
27.5 MVVM的優(yōu)缺點 530
27.6 MVC、MVP與MVVM的異同 530
27.7 小結 531
第28章 易混淆的設計模式 532
28.1 簡單工廠、工廠方法、抽象工廠、
Builder模式的區(qū)別 532
28.2 代理與裝飾模式、橋接模式 538
28.3 外觀模式與中介模式 543
28.4 策略與狀態(tài)模式、命令模式 547
28.5 結束語 553