Android源碼設計模式解析與實戰(第2版)

Android源碼設計模式解析與實戰(第2版)

《Android源碼設計模式解析與實戰(第2版)》是2020年4月人民郵電出版社出版的圖書,作者是何紅輝、關愛民。

基本介紹

  • 書名:Android源碼設計模式解析與實戰(第2版)
  • 作者:何紅輝、關愛民
  • ISBN:9787115452962
  • 頁數:553頁
  • 定價:99元
  • 出版社:人民郵電出版社
  • 出版時間:2020年4月
  • 裝幀:平裝
  • 開本:16開
內容簡介,圖書目錄,

內容簡介

本書專門介紹Android源燥迎糠代碼的設計模式,主要講解面向對象的六大原則、主流的設計模式以及MVC和MVP模式。本書的主要內容為:最佳化代碼的第 一步、開閉原則、里氏替換原則、依賴倒置原則、接口隔離原則、迪米特原則、單例模式、Builder模式、原型模式、工廠方法模式、抽象工廠模式、策略模式、狀態模式、責任鏈模式、解釋器模式、命令模式、觀察者模式、備忘錄模式、疊代器模式、模板方法模式、訪問者模式、中介者模式、代理模式、組合模式、適配器模式、裝匙漿洪飾模式、享元模式、外觀模式、橋接模式,以及MVC的介紹與實戰和MVP套用架構模式。每個章節都對某個模式做了深入分析,並且會對模式相關的技術點進行深入拓希備探旋展,讓讀者在掌握模式的同時學習到Android中的一些重要知識,通過實戰幫助讀者達到學以致用的目的,且能夠將模式運用於項目中,開發出高質量的程式。
本書適合的讀者為初、中、高 級Android工程師,也可以作為大專院校相關師生的學習用書和培訓學校的教材。

圖書目錄

第 1章 走向靈活軟體之路——
面向對象的六大原則 1
1.1 最佳化代碼的第 一步——單一職責原則 1
1.2 讓程式更穩定、更靈活——開閉原則 5
1.3 構建擴展性更好的系統——
里氏替換原則 12
1.4 讓項目擁有變化的能力——
依賴倒置原則 14
1.5 系統有更高的靈活性——
接口隔離原則 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 單例模式的其他實現方式 27
2.6.1 懶漢模式 27
2.6.2 Double Check Lock (DCL)實現
單例 27
2.6.3 靜態內部類單例模式 28
2.6.4 枚舉單例 29
2.6.5 使用容器實現單例模式 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模式的簡單實現 45
3.6 Android源碼中的Builder模式實現 47
3.7 深入了解WindowManager 53
3.8 Builder模式實戰 60
3.9 小結 65
第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 抽象工廠模式在Android開發中的
套用 116
6.8 小結 120
第7章 時勢造英雄——策略模式 121
7.1 策略模式介紹 121
7.2 策略模式的定義 121
7.3 策略模式的使用場景 121
7.4 策略模式的UML類圖 122
7.5 策略模式的簡單實現 122
7.6 Android源碼中的策略模式實現 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 策略模式實戰套用 146
7.9 小結 148
第8章 隨遇而安——狀態模式 149
8.1 狀態模式介紹 149
8.2 狀態模式的定義 149
8.3 狀態模式的使用場景 149
8.4 狀態模式的UML類圖 149
8.5 狀態模式的簡單示例 150
8.6 Wi-Fi管理中的狀態模式 154
8.7 狀態模式實戰 163
8.8 小結 168
第9章 使編程更有靈活性——
責任鏈模式 169
9.1 責任鏈模式介紹 169
9.2 責任鏈模式的定義 169
9.3 責任鏈模式的使用場景 169
9.4 責任鏈模式的UML類圖 169
9.5 責任鏈模式的簡單實現 174
9.6 Android源碼中的責任鏈模式實現 177
9.7 責任鏈模式實戰 182
9.8 小結 185
第 10章 化繁為簡的翻譯機——
解釋器模式 186
10.1 解釋器模式介紹 186
10.2 解釋器模式的定義 186
10.3 解釋器模式的使用場景 187
10.4 解釋器模式的UML類圖 188
10.5 解釋器模式的簡單實現 189
10.6 Android源碼中的解釋器模式實現 193
10.7 關於PackageManagerService 199
10.8 小結 207
第 11章 讓程式暢通執行——命令模式 208
11.1 命令模式介紹 208
11.2 命令模式的定義 208
11.3 命令模式的使用場景 208
11.4 命令模式的UML類圖 208
11.5 命令模式的簡單實現 211
11.6 Android源碼中的命令模式實現 215
11.7 Android事件輸入系統介紹 218
11.8 命令模式實戰 220
11.9 小結 227
第 12章 解決解耦的鑰匙——
觀察者模式 228
12.1 觀察者模式介紹 228
12.2 觀察者模式的定義 228
12.3 觀察者模式的使用場景 228
12.4 觀察者模式的UML類圖 228
12.5 觀察者模式的簡單實現 229
12.6 Android源碼分析 231
12.7 觀察者模式的深入拓展 234
12.8 實戰 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調用的
時機 261
13.7.2 使用V4包存儲狀態的bug 261
13.8 實戰 264
13.9 小結 271
第 14章 解決問題的“第三者”——
疊代器模式 272
14.1 疊代器模式介紹 272
14.2 疊代器模式的定義 272
14.3 疊代器模式的使用場景 272
14.4 疊代器模式的UML類圖 272
14.5 模式的簡單實現 275
14.6 Android源碼中的模式實現 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 模板方法實戰 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 訪問者模式實戰 314
16.8 小結 320
第 17章 “和事佬”——中介者模式 321
17.1 中介者模式介紹 321
17.2 中介者模式的定義 322
17.3 中介者模式的使用場景 322
17.4 中介者模式的UML類圖 322
17.5 中介者模式的簡單實現 324
17.6 Android源碼中的中介者模式實現 328
17.7 中介者模式實戰 330
17.8 小結 333
第 18章 編程好幫手——代理模式 334
18.1 代理模式介紹 334
18.2 代理模式的定義 334
18.3 代理模式的使用場景 334
18.4 代理模式的UML類圖 334
18.5 代理模式的簡單實現 336
18.6 Android源碼中的代理模式實現 340
18.7 Android中的Binder跨進程通信機制
與AIDL 344
18.8 代理模式實戰 355
18.9 小結 359
第 19章 物以類聚——組合模式 360
19.1 組合模式介紹 360
19.2 組合模式的定義 361
19.3 組合模式的使用場景 361
19.4 組合模式的UML類圖 361
19.5 組合模式的簡單實現 367
19.6 Android源碼中的模式實現 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 實戰演示 398
20.9 小結 407
第 21章 裝飾模式 408
21.1 裝飾模式介紹 408
21.2 裝飾模式的定義 408
21.3 裝飾模式的使用場景 408
21.4 裝飾模式的UML類圖 408
21.5 模式的簡單實現 411
21.6 Android源碼中的模式實現 413
21.7 Context與ContextImpl 415
21.8 模式實戰 423
21.9 小結 424
第 22章 對象共享,避免創建多對象——
享元模式 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 子執行緒中創建Handler為何會拋出異常 443
22.8 小結 444
第 23章 統一編程接口——外觀模式 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 動態載入框架的實現 459
23.8 外觀模式實戰 466
23.9 小結 468
第 24章 連線兩地的交通樞鈕——
橋接模式 470
24.1 橋接模式介紹 470
24.2 橋接模式的定義 470
24.3 橋接模式的使用場景 470
24.4 橋接模式的UML類圖 470
24.5 橋接模式的簡單實現 472
24.6 Android源碼中的橋接模式實現 475
24.7 關於WindowManagerService 476
24.8 橋接模式實戰 484
24.9 小結 487
第 25章 MVC的介紹與實戰 488
25.1 MVC的歷史與結構的演化 488
25.2 MVC的套用淺析 494
25.3 MVC在Android中的實現 499
25.4 MVC框架模式與設計模式 503
第 26章 MVP套用架構模式 504
26.1 MVP模式介紹 504
26.2 MVP模式的三個角色 505
26.3 NavigationView中的MVP模式 505
26.4 MVP的實現 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的優缺點 530
27.6 MVC、MVP與MVVM的異同 530
27.7 小結 531
第 28章 易混淆的設計模式 532
28.1 簡單工廠、工廠方法、抽象工廠、
Builder模式的區別 532
28.2 代理與裝飾模式、橋接模式 538
28.3 外觀模式與中介模式 543
28.4 策略與狀態模式、命令模式 547
28.5 結束語 553
3.7 深入了解WindowManager 53
3.8 Builder模式實戰 60
3.9 小結 65
第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 抽象工廠模式在Android開發中的
套用 116
6.8 小結 120
第7章 時勢造英雄——策略模式 121
7.1 策略模式介紹 121
7.2 策略模式的定義 121
7.3 策略模式的使用場景 121
7.4 策略模式的UML類圖 122
7.5 策略模式的簡單實現 122
7.6 Android源碼中的策略模式實現 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 策略模式實戰套用 146
7.9 小結 148
第8章 隨遇而安——狀態模式 149
8.1 狀態模式介紹 149
8.2 狀態模式的定義 149
8.3 狀態模式的使用場景 149
8.4 狀態模式的UML類圖 149
8.5 狀態模式的簡單示例 150
8.6 Wi-Fi管理中的狀態模式 154
8.7 狀態模式實戰 163
8.8 小結 168
第9章 使編程更有靈活性——
責任鏈模式 169
9.1 責任鏈模式介紹 169
9.2 責任鏈模式的定義 169
9.3 責任鏈模式的使用場景 169
9.4 責任鏈模式的UML類圖 169
9.5 責任鏈模式的簡單實現 174
9.6 Android源碼中的責任鏈模式實現 177
9.7 責任鏈模式實戰 182
9.8 小結 185
第 10章 化繁為簡的翻譯機——
解釋器模式 186
10.1 解釋器模式介紹 186
10.2 解釋器模式的定義 186
10.3 解釋器模式的使用場景 187
10.4 解釋器模式的UML類圖 188
10.5 解釋器模式的簡單實現 189
10.6 Android源碼中的解釋器模式實現 193
10.7 關於PackageManagerService 199
10.8 小結 207
第 11章 讓程式暢通執行——命令模式 208
11.1 命令模式介紹 208
11.2 命令模式的定義 208
11.3 命令模式的使用場景 208
11.4 命令模式的UML類圖 208
11.5 命令模式的簡單實現 211
11.6 Android源碼中的命令模式實現 215
11.7 Android事件輸入系統介紹 218
11.8 命令模式實戰 220
11.9 小結 227
第 12章 解決解耦的鑰匙——
觀察者模式 228
12.1 觀察者模式介紹 228
12.2 觀察者模式的定義 228
12.3 觀察者模式的使用場景 228
12.4 觀察者模式的UML類圖 228
12.5 觀察者模式的簡單實現 229
12.6 Android源碼分析 231
12.7 觀察者模式的深入拓展 234
12.8 實戰 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調用的
時機 261
13.7.2 使用V4包存儲狀態的bug 261
13.8 實戰 264
13.9 小結 271
第 14章 解決問題的“第三者”——
疊代器模式 272
14.1 疊代器模式介紹 272
14.2 疊代器模式的定義 272
14.3 疊代器模式的使用場景 272
14.4 疊代器模式的UML類圖 272
14.5 模式的簡單實現 275
14.6 Android源碼中的模式實現 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 模板方法實戰 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 訪問者模式實戰 314
16.8 小結 320
第 17章 “和事佬”——中介者模式 321
17.1 中介者模式介紹 321
17.2 中介者模式的定義 322
17.3 中介者模式的使用場景 322
17.4 中介者模式的UML類圖 322
17.5 中介者模式的簡單實現 324
17.6 Android源碼中的中介者模式實現 328
17.7 中介者模式實戰 330
17.8 小結 333
第 18章 編程好幫手——代理模式 334
18.1 代理模式介紹 334
18.2 代理模式的定義 334
18.3 代理模式的使用場景 334
18.4 代理模式的UML類圖 334
18.5 代理模式的簡單實現 336
18.6 Android源碼中的代理模式實現 340
18.7 Android中的Binder跨進程通信機制
與AIDL 344
18.8 代理模式實戰 355
18.9 小結 359
第 19章 物以類聚——組合模式 360
19.1 組合模式介紹 360
19.2 組合模式的定義 361
19.3 組合模式的使用場景 361
19.4 組合模式的UML類圖 361
19.5 組合模式的簡單實現 367
19.6 Android源碼中的模式實現 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 實戰演示 398
20.9 小結 407
第 21章 裝飾模式 408
21.1 裝飾模式介紹 408
21.2 裝飾模式的定義 408
21.3 裝飾模式的使用場景 408
21.4 裝飾模式的UML類圖 408
21.5 模式的簡單實現 411
21.6 Android源碼中的模式實現 413
21.7 Context與ContextImpl 415
21.8 模式實戰 423
21.9 小結 424
第 22章 對象共享,避免創建多對象——
享元模式 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 子執行緒中創建Handler為何會拋出異常 443
22.8 小結 444
第 23章 統一編程接口——外觀模式 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 動態載入框架的實現 459
23.8 外觀模式實戰 466
23.9 小結 468
第 24章 連線兩地的交通樞鈕——
橋接模式 470
24.1 橋接模式介紹 470
24.2 橋接模式的定義 470
24.3 橋接模式的使用場景 470
24.4 橋接模式的UML類圖 470
24.5 橋接模式的簡單實現 472
24.6 Android源碼中的橋接模式實現 475
24.7 關於WindowManagerService 476
24.8 橋接模式實戰 484
24.9 小結 487
第 25章 MVC的介紹與實戰 488
25.1 MVC的歷史與結構的演化 488
25.2 MVC的套用淺析 494
25.3 MVC在Android中的實現 499
25.4 MVC框架模式與設計模式 503
第 26章 MVP套用架構模式 504
26.1 MVP模式介紹 504
26.2 MVP模式的三個角色 505
26.3 NavigationView中的MVP模式 505
26.4 MVP的實現 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的優缺點 530
27.6 MVC、MVP與MVVM的異同 530
27.7 小結 531
第 28章 易混淆的設計模式 532
28.1 簡單工廠、工廠方法、抽象工廠、
Builder模式的區別 532
28.2 代理與裝飾模式、橋接模式 538
28.3 外觀模式與中介模式 543
28.4 策略與狀態模式、命令模式 547
28.5 結束語 553

相關詞條

熱門詞條

聯絡我們