第1章 走嚮靈活軟件之路——麵嚮對象的六大原則 1
1.1 優化代碼的第一步——單一職責原則 1
1.2 讓程序更穩定、更靈活——開閉原則 5
1.3 構建擴展性更好的係統——裏氏替換原則 12
1.4 讓項目擁有變化的能力——依賴倒置原則 13
1.5 係統有更高的靈活性——接口隔離原則 16
1.6 更好的可擴展性——迪米特原則 18
1.7 總結 22
第2章 應用最廣的模式——單例模式 23
2.1 單例模式介紹 23
2.2 單例模式的定義 23
2.3 單例模式的使用場景 23
2.4 單例模式UML類圖 23
2.5 單例模式的簡單示例 24
2.6 單例模式的其他實現方式 26
2.6.1 懶漢模式 26
2.6.2 Double CheckLock ( DCL )
實現單例 26
2.6.3 靜態內部類單例模式 27
2.6.4 枚舉單例 28
2.6.5 使用容器實現單例模式 28
2.7 Android源碼中的單例模式 29
2.8 無名英雄——深入理解LayoutInflater 33
2.9 運用單例模式 40
2.10 總結 42
第3章 自由擴展你的項目——Builder模式 43
3.1 Builder模式介紹 43
3.2 Builder模式的定義 43
3.3 Builder模式的使用場景 43
3.4 Builder模式的UML類圖 43
3.5 Builder模式的簡單實現 44
3.6 Android源碼中的Builder模式實現 46
3.7 深入瞭解WindowManager 52
3.8 Builder模式實戰 59
3.9 總結 64
第4章 使程序運行更高效——原型模式 66
4.1 原型模式介紹 66
4.2 原型模式的定義 66
4.3 原型模式的使用場景 66
4.4 原型模式的UML類圖 66
4.5 原型模式的簡單實現 67
4.6 淺拷貝和深拷貝 69
4.7 Android源碼中的原型模式實現 72
4.8 Intent的查找與匹配 74
4.8.1 App信息錶的構建 74
4.8.2 精確匹配 80
4.9 原型模式實戰 83
4.10 總結 85
第5章 應用最廣泛的模式——工廠方法模式 87
5.1 工廠方法模式介紹 87
5.2 工廠方法模式的定義 87
5.3 工廠方法模式的使用場景 87
5.4 工廠方法模式的UML類圖 87
5.5 模式的簡單實現 90
5.6 Android源碼中的工廠方法模式實現 93
5.7 關於onCreate方法 95
5.8 工廠方法模式實戰 102
5.9 總結 105
第6章 創建型設計模式——抽象工廠模式 106
6.1 抽象工廠模式介紹 106
6.2 抽象工廠模式的定義 106
6.3 抽象工廠模式的使用場景 106
6.4 抽象工廠模式的UML類圖 106
6.5 抽象工廠方法模式的簡單實現 109
6.6 Android源碼中的抽象工廠方法模式實現 112
6.7 總結 116
第7章 時勢造英雄——策略模式 117
7.1 策略模式介紹 117
7.2 策略模式的定義 117
7.3 策略模式的使用場景 117
7.4 策略模式的UML類圖 118
7.5 策略模式的簡單實現 118
7.6 Android源碼中的策略模式實現 123
7.6.1 時間插值器 123
7.6.2 動畫中的時間插值器 124
7.7 深入屬性動畫 128
7.7.1 屬性動畫體係的總體設計 128
7.7.2 屬性動畫的核心類介紹 128
7.7.3 基本使用 129
7.7.4 流程圖 130
7.7.5 詳細設計 131
7.7.6 核心原理分析 131
7.8 策略模式實戰應用 142
7.9 總結 144
第8章 隨遇而安——狀態模式 145
8.1 狀態模式介紹 145
8.2 狀態模式的定義 145
8.3 狀態模式的使用場景 145
8.4 狀態模式的UML類圖 145
8.5 狀態模式的簡單示例 146
8.6 Wi-Fi管理中的狀態模式 150
8.7 狀態模式實戰 159
8.8 總結 164
第9章 使編程更有靈活性——責任鏈模式 165
9.1 責任鏈模式介紹 165
9.2 責任鏈模式的定義 165
9.3 責任鏈模式的使用場景 165
9.4 責任鏈模式的UML類圖 165
9.5 責任鏈模式的簡單實現 170
9.6 Android源碼中的責任鏈模式實現 173
9.7 責任鏈模式實戰 178
9.8 總結 181
第10章 化繁為簡的翻譯機——解釋器模式 182
10.1 解釋器模式介紹 182
10.2 解釋器模式的定義 182
10.3 解釋器模式的使用場景 183
10.4 解釋器模式的UML類圖 184
10.5 解釋器模式的簡單實現 185
10.6 Android源碼中的解釋器模式實現 189
10.7 關於PackageManagerService 195
10.8 總結 203
第11章 讓程序暢通執行——命令模式 204
11.1 命令模式介紹 204
11.2 命令模式的定義 204
11.3 命令模式的使用場景 204
11.4 命令模式的UML類圖 204
11.5 命令模式的簡單實現 207
11.6 Android源碼中的命令模式實現 211
11.7 Android事件輸入係統介紹 214
11.8 命令模式實戰 216
11.9 總結 223
第12章 解決、解耦的鑰匙——觀察者模式 224
12.1 觀察者模式介紹 224
12.2 觀察者模式的定義 224
12.3 觀察者模式的使用場景 224
12.4 觀察者模式的UML類圖 224
12.5 觀察者模式的簡單實現 225
12.6 Android源碼分析 227
12.7 觀察者模式的深入拓展 230
12.8 實戰 238
12.9 總結 245
第13章 編程中的“後悔藥”——備忘錄模式 247
13.1 備忘錄模式介紹 247
13.2 備忘錄模式的定義 247
13.3 備忘錄模式的使用場景 247
13.4 備忘錄模式的UML類圖 247
13.5 備忘錄模式的簡單示例 248
13.6 Android源碼中的備忘錄模式 250
13.7 深度拓展 257
13.7.1 onSaveInstanceState調用的時機 257
13.7.2 使用V4包存儲狀態的bug 257
13.8 實戰 260
13.9 總結 267
第14章 解決問題的“第三者”——迭代器模式 268
14.1 迭代器模式介紹 268
14.2 迭代器模式的定義 268
14.3 迭代器模式的使用場景 268
14.4 迭代器模式的UML類圖 268
14.5 模式的簡單實現 271
14.6 Android源碼中的模式實現 275
14.7 總結 277
第15章 抓住問題核心——模闆方法模式 278
15.1 模闆方法模式介紹 278
15.2 模闆方法模式的定義 278
15.3 模闆方法模式的使用場景 278
15.4 模闆方法模式的UML類圖 278
15.5 模闆方法模式的簡單示例 279
15.6 Android源碼中的模闆方法模式 281
15.7 深度拓展 283
15.8 模闆方法實戰 296
15.9 總結 299
第16章 訪問者模式 301
16.1 訪問者模式介紹 301
16.2 訪問者模式的定義 301
16.3 訪問者模式的使用場景 301
16.4 訪問者模式的UML類圖 301
16.5 訪問者模式的簡單示例 302
16.6 Android源碼中的模式 306
16.7 訪問者模式實戰 309
16.8 總結 316
第17章 “和事佬”——中介者模式 317
17.1 中介者模式介紹 317
17.2 中介者模式的定義 318
17.3 中介者模式的使用場景 318
17.4 中介者模式的UML類圖 318
17.5 中介者模式的簡單實現 320
17.6 Android源碼中的中介者模式實現 324
17.7 中介者模式實戰 326
17.8 總結 329
第18章 編程好幫手——代理模式 330
18.1 代理模式介紹 330
18.2 代理模式的定義 330
18.3 代理模式的使用場景 330
18.4 代理模式的UML類圖 330
18.5 代理模式的簡單實現 332
18.6 Android源碼中的代理模式實現 336
18.7 Android中的Binder跨進程通信機製與AIDL 340
18.8 代理模式實戰 351
18.9 總結 355
第19章 物以類聚——組閤模式 356
19.1 組閤模式介紹 356
19.2 組閤模式的定義 357
19.3 組閤模式的使用場景 357
19.4 組閤模式的UML類圖 357
19.5 組閤模式的簡單實現 363
19.6 Android源碼中的模式實現 367
19.7 為什麼ViewGroup有容器的功能 368
19.8 總結 370
第20章 得心應手的“粘閤劑”——適配器模式 371
20.1 適配器模式介紹 371
20.2 適配器模式的定義 371
20.3 適配器模式的使用場景 371
20.4 適配器模式的UML類圖 371
20.5 適配器模式應用的簡單示例 372
20.5.1 類適配器模式 372
20.5.2 對象適配器模式 373
20.6 Android源碼中的適配器模式 375
20.7 深度拓展 380
20.8 實戰演示 393
20.9 總結 402
第21章 裝飾模式 403
21.1 裝飾模式介紹 403
21.2 裝飾模式的定義 403
21.3 裝飾模式的使用場景 403
21.4 裝飾模式的UML類圖 403
21.5 模式的簡單實現 406
21.6 Android源碼中的模式實現 408
21.7 Context與ContextImpl 410
21.8 模式實戰 419
21.9 總結 419
第22章 對象共享,避免創建多對象——享元模式 420
22.1 享元模式介紹 420
22.2 享元模式定義 420
22.3 享元模式的使用場景 420
22.4 享元模式的UML類圖 420
22.5 享元模式的簡單示例 421
22.6 Android源碼中的享元模式 424
22.7 深度拓展 429
22.7.1 深入瞭解Android的消息機製 429
22.7.2 子綫程中創建Handler為何會拋齣異常 438
22.8 總結 439
第23章 統一編程接口——外觀模式 440
23.1 外觀模式介紹 440
23.2 外觀模式定義 440
23.3 外觀模式的使用場景 440
23.4 外觀模式的UML類圖 440
23.5 外觀模式的簡單示例 441
23.6 Android源碼中的外觀模式 443
23.7 深度拓展 448
23.7.1 Android資源的加載與匹配 448
23.7.2 動態加載框架的實現 455
23.8 外觀模式實戰 461
23.9 總結 464
第24章 連接兩地的交通樞鈕——橋接模式 465
24.1 橋接模式介紹 465
24.2 橋接模式的定義 465
24.3 橋接模式的使用場景 465
24.4 橋接模式的UML類圖 465
24.5 橋接模式的簡單實現 467
24.6 Android源碼中的橋接模式實現 470
24.7 關於WindowManagerService 471
24.8 橋接模式實戰 479
24.9 總結 482
第25章 MVC的介紹與實戰 483
25.1 MVC的起源與曆史 483
25.2 MVC在Android中的實現 484
25.3 總結 486
第26章 MVP應用架構模式 487
26.1 MVP模式介紹 487
26.2 MVP模式的三個角色 488
26.3 與MVC、MVVM的區彆 488
26.4 MVP的實現 489
26.5 MVP與Activity、Fragment的生命周期 493
· · · · · · (
收起)