書(shū)????名 | 移動(dòng)開(kāi)發(fā)架構(gòu)設(shè)計(jì)實(shí)戰(zhàn) | 作????者 | 李云鵬 |
---|---|---|---|
ISBN | 9787121375071 | 頁(yè)????數(shù) | 304 |
定????價(jià) | ¥89.0 | 出版社 | 電子工業(yè)出版社 |
出版時(shí)間 | 2019年11月 | 開(kāi)????本 | 16開(kāi) |
第1章 什么是架構(gòu) 1
1.1 架構(gòu)設(shè)計(jì)理念 1
1.1.1 軟件架構(gòu)的起源 1
1.1.2 架構(gòu)設(shè)計(jì)三要素 2
1.1.3 什么是優(yōu)秀的軟件架構(gòu)設(shè)計(jì) 2
1.1.4 軟件架構(gòu)設(shè)計(jì)的關(guān)注點(diǎn) 3
1.2 軟件架構(gòu)設(shè)計(jì)的本質(zhì)和目的 3
1.2.1 做出決策 3
1.2.2 降低軟件熵 4
1.3 架構(gòu)設(shè)計(jì)思維 4
1.3.1 簡(jiǎn)化思維 4
1.3.2 分層思維 5
1.3.3 分治思維 6
1.3.4 迭代思維 6
1.4 架構(gòu)設(shè)計(jì)模式原則 7
1.4.1 單一職責(zé)原則 7
1.4.2 開(kāi)放封閉原則 8
1.4.3 里氏替換原則 9
1.4.4 依賴倒置原則 9
1.4.5 接口分離原則 10
1.5 架構(gòu)設(shè)計(jì)步驟 11
1.5.1 認(rèn)識(shí)系統(tǒng) 11
1.5.2 設(shè)計(jì)系統(tǒng) 12
1.5.3 創(chuàng)建系統(tǒng) 14
1.5.4 收集反饋 14
1.6 小結(jié) 15
第2章 MVC架構(gòu):表現(xiàn)層分離 16
2.1 什么是MVC 16
2.1.1 MVC的誕生 16
2.1.2 MVC的分層與職責(zé) 17
2.1.3 MVC在移動(dòng)開(kāi)發(fā)中的爭(zhēng)議 18
2.2 MVC的模式 19
2.2.1 被動(dòng)模式 19
2.2.2 主動(dòng)模式 19
2.2.3 觀察者模式 20
2.2.4 被動(dòng)模式與主動(dòng)模式的區(qū)別 21
2.3 MVC的核心思想 21
2.4 小結(jié) 22
第3章 實(shí)戰(zhàn):基于MVC架構(gòu)設(shè)計(jì)的日記App 23
3.1 層級(jí)職責(zé)劃分 23
3.2 準(zhǔn)備階段 24
3.2.1 準(zhǔn)備、創(chuàng)建View 24
3.2.2 清單文件Manifest配置 26
3.2.3 初始化Fragment 27
3.3 創(chuàng)建View 28
3.4 數(shù)據(jù)處理 31
3.4.1 創(chuàng)建Model 31
3.4.2 創(chuàng)建本地?cái)?shù)據(jù)源 32
3.4.3 數(shù)據(jù)持久化工具 33
3.4.4 實(shí)現(xiàn)本地?cái)?shù)據(jù)源 34
3.4.5 填充測(cè)試數(shù)據(jù) 36
3.4.6 使用數(shù)據(jù)倉(cāng)庫(kù)管理數(shù)據(jù) 37
3.5 創(chuàng)建Controller 40
3.5.1 Controller初始化 40
3.5.2 創(chuàng)建Adapter 41
3.5.3 創(chuàng)建ViewHolder 43
3.5.4 Controller的協(xié)調(diào)工作 44
3.6 運(yùn)行App 48
3.7 實(shí)現(xiàn)主動(dòng)模式的MVC 49
3.7.1 改造Model 49
3.7.2 注冊(cè)觀察者 50
3.8 小結(jié) 50
第4章 MVP架構(gòu):開(kāi)始解耦 52
4.1 什么是MVP 52
4.1.1 MVP架構(gòu)的起源 52
4.1.2 MVP的分層與職責(zé) 52
4.2 MVP的核心思想 53
4.2.1 面向接口編程 53
4.2.2 德墨忒爾定律 54
4.3 MVP與MVC的區(qū)別 55
4.4 MVP模式存在的問(wèn)題 56
4.4.1 責(zé)任過(guò)重的Presenter 56
4.4.2 業(yè)務(wù)邏輯無(wú)法復(fù)用 56
4.4.3 急劇擴(kuò)增的接口數(shù)量 57
4.5 如何解決Presenter的復(fù)用問(wèn)題 57
4.5.1 提供工具類 57
4.5.2 提供多對(duì)一的Presenter 57
4.5.3 分離出Interactor層 58
4.6 小結(jié) 59
第5章 實(shí)戰(zhàn):MVP架構(gòu)設(shè)計(jì) 60
5.1 層級(jí)職責(zé)劃分 60
5.2 準(zhǔn)備工作 60
5.2.1 定義基礎(chǔ)View接口 60
5.2.2 定義基礎(chǔ)Presenter接口 61
5.3 重構(gòu):從MVC到MVP 61
5.3.1 創(chuàng)建Presenter 61
5.3.2 改造View 62
5.3.3 傳入Presenter實(shí)例 63
5.3.4 開(kāi)發(fā)過(guò)程中Presenter和View的直接依賴 63
5.3.5 Presenter生命周期的處理 64
5.3.6 列表Adapter的處理 64
5.3.7 展示數(shù)據(jù)的處理 65
5.3.8 對(duì)話框展示的處理 67
5.3.9 菜單的處理 68
5.3.10 實(shí)現(xiàn)面向接口設(shè)計(jì) 69
5.3.11 建立契約類 69
5.4 實(shí)現(xiàn)MVP模式:日記修改功能 70
5.4.1 創(chuàng)建日記修改Activity 71
5.4.2 創(chuàng)建日記修改Fragment 72
5.4.3 添加“完成”按鈕 74
5.4.4 創(chuàng)建日記修改Presenter 75
5.4.5 日記操作處理 76
5.4.6 頁(yè)面跳轉(zhuǎn)處理 77
5.4.7 刪除舊有的修改日記UI 78
5.4.8 修改為面向接口設(shè)計(jì) 79
5.5 小結(jié) 79
第6章 MVVM架構(gòu):雙向綁定 81
6.1 什么是MVVM 81
6.1.1 MVVM架構(gòu)的起源 81
6.1.2 MVVM的分層與職責(zé) 82
6.2 MVVM的核心思想 82
6.2.1 進(jìn)一步解耦 82
6.2.2 數(shù)據(jù)驅(qū)動(dòng) 83
6.2.3 雙向綁定 83
6.3 架構(gòu)模式對(duì)比 84
6.3.1 MVC與MVVM 84
6.3.2 MVP與MVVM 85
6.4 MVVM存在的問(wèn)題 86
6.4.1 ViewModel難以復(fù)用 86
6.4.2 學(xué)習(xí)成本高 86
6.4.3 調(diào)試?yán)щy 86
6.5 小結(jié) 87
第7章 實(shí)戰(zhàn):MVVM架構(gòu)設(shè)計(jì) 88
7.1 什么是DataBinding 88
7.2 重構(gòu):從MVP到MVVM 88
7.2.1 配置DataBinding支持 89
7.2.2 修改Presenter為ViewModel 89
7.2.3 消除契約類 90
7.2.4 轉(zhuǎn)換布局文件 92
7.2.5 在布局中加入變量和表達(dá)式 93
7.2.6 ViewModel繼承BaseObservable 94
7.2.7 在XML布局文件中定義列表數(shù)據(jù)屬性 95
7.2.8 使用BindingAdapter處理自定義屬性 97
7.2.9 繪制View布局 98
7.2.10 為View屬性賦值 99
7.2.11 找到XML中的View 100
7.2.12 ObservableField原理 100
7.2.13 使用ObservableField 101
7.2.14 使用ObservableList 103
7.3 小結(jié) 104
第8章 依賴注入:Dagger2鋒利的“匕首” 105
8.1 什么是Dagger 105
8.1.1 依賴注入 105
8.1.2 編譯時(shí)注解解析 107
8.2 實(shí)現(xiàn):將Dagger2加入MVP 108
8.2.1 配置Dagger2 108
8.2.2 確定數(shù)據(jù)倉(cāng)庫(kù)改造目標(biāo) 108
8.2.3 改造數(shù)據(jù)倉(cāng)庫(kù) 109
8.2.4 Inject注解 110
8.2.5 Component注解 111
8.2.6 Module注解 114
8.2.7 Provides注解 115
8.2.8 Scope注解 117
8.2.9 Singleton注解 117
8.2.10 Scope注解和Singleton注解的實(shí)現(xiàn)原理 118
8.2.11 日記列表模塊依賴關(guān)系分析 120
8.2.12 創(chuàng)建日記列表模塊Component 120
8.2.13 創(chuàng)建日記列表Presenter Module 121
8.2.14 Component的dependencies屬性 123
8.3 存在的問(wèn)題 125
8.3.1 學(xué)習(xí)成本極高 125
8.3.2 短期內(nèi)開(kāi)發(fā)效率低 125
8.3.3 靈活性不良好 126
8.4 小結(jié) 126
第9章 函數(shù)響應(yīng)式框架:優(yōu)雅的RxJava2 127
9.1 什么是RxJava 127
9.2 RxJava2的核心思想 128
9.2.1 函數(shù)響應(yīng)式編程 128
9.2.2 背壓 129
9.2.3 鏈?zhǔn)秸{(diào)用 129
9.3 實(shí)戰(zhàn):將RxJava2加入MVP 130
9.3.1 配置RxJava2 130
9.3.2 Flowable 131
9.3.3 響應(yīng)式拉取 132
9.3.4 修改數(shù)據(jù)源接口 133
9.3.5 修改本地?cái)?shù)據(jù)源 133
9.3.6 Just操作符 134
9.3.7 Empty操作符 135
9.3.8 FromIterable操作符 135
9.3.9 To操作符 136
9.3.10 Subscriber和事件流 137
9.3.11 修改數(shù)據(jù)倉(cāng)庫(kù) 137
9.3.12 FlatMap操作符 139
9.3.13 Map操作符 140
9.3.14 修改Presenter 141
9.3.15 CompositeDisposable和Disposable 142
9.3.16 Presenter生命周期 143
9.4 存在的問(wèn)題 144
9.5 小結(jié) 144
第10章 AAC:搭建生命周期感知架構(gòu) 145
10.1 什么是AAC 145
10.2 AAC的核心思想 146
10.2.1 關(guān)注點(diǎn)分離 146
10.2.2 模型驅(qū)動(dòng)界面 147
10.3 ViewModel LiveData 148
10.3.1 DataBinding 148
10.3.2 Gradle依賴配置 149
10.3.3 AAC中的ViewModel 149
10.3.4 使用ViewModel 150
10.3.5 使用ViewModelProviders創(chuàng)建ViewModel 151
10.3.6 什么是LiveData 152
10.3.7 MutableLiveData 153
10.3.8 創(chuàng)建LiveData 154
10.3.9 LiveData更新 155
10.3.10 LiveData接收變化 156
10.4 LifeCycle 156
10.4.1 生命周期 157
10.4.2 LifecycleObserver 158
10.4.3 LifecycleOwner 159
10.5 Room 160
10.5.1 Room的組成 160
10.5.2 實(shí)體 161
10.5.3 數(shù)據(jù)訪問(wèn)對(duì)象DAO 163
10.5.4 Room依賴配置 164
10.5.5 定義實(shí)體 164
10.5.6 創(chuàng)建Dao 165
10.5.7 創(chuàng)建數(shù)據(jù)庫(kù)管理器 166
10.5.8 線程處理 168
10.5.9 修改本地?cái)?shù)據(jù)源 169
10.5.10 數(shù)據(jù)庫(kù)升級(jí) 172
10.6 小結(jié) 173
第11章 組件化架構(gòu):極速運(yùn)行 174
11.1 什么是組件化 174
11.2 組件化的核心思想 175
11.2.1 軟件復(fù)用 175
11.2.2 信息隱藏 176
11.2.3 快速運(yùn)行 177
11.3 組件分離 178
11.3.1 組件層級(jí)劃分 178
11.3.2 組件劃分 179
11.3.3 創(chuàng)建Module 180
11.3.4 組件依賴關(guān)系 183
11.3.5 復(fù)用Gradle配置 187
11.3.6 公共資源組件 189
11.3.7 基礎(chǔ)組件 191
11.3.8 移動(dòng)依賴 194
11.3.9 Gradle版本號(hào)管理 194
11.3.10 處理Context 197
11.3.11 公共組件 198
11.3.12 日記列表展示組件 200
11.3.13 日記添加修改組件 202
11.3.14 Gradle Plugin沖突 204
11.3.15 運(yùn)行主Module 204
11.4 使用路由 206
11.4.1 路由配置 206
11.4.2 使用Route跳轉(zhuǎn) 207
11.4.3 攜帶參數(shù)跳轉(zhuǎn) 208
11.5 組件運(yùn)行 210
11.5.1 切換開(kāi)關(guān) 210
11.5.2 組件配置 212
11.5.3 Manifest文件配置 212
11.5.4 集成運(yùn)行 215
11.6 組件合并 216
11.6.1 組件命名沖突 216
11.6.2 Manifest文件合并策略 217
11.6.3 資源文件沖突 218
11.6.4 資源文件合并策略 219
11.7 小結(jié) 220
第12章 The Clean Architecture:整潔的架構(gòu) 221
12.1 什么是The Clean Architecture 221
12.2 The Clean Architecture的核心思想 222
12.2.1 單向依賴規(guī)則 222
12.2.2 業(yè)務(wù)規(guī)則分離 223
12.2.3 簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)跨界 224
12.3 MVP-Clean架構(gòu) 224
12.3.1 用例的請(qǐng)求數(shù)據(jù)和響應(yīng)數(shù)據(jù) 224
12.3.2 用例的數(shù)據(jù)處理 226
12.3.3 用例的線程切換 228
12.3.4 創(chuàng)建用例 229
12.3.5 執(zhí)行用例 230
12.3.6 封裝請(qǐng)求數(shù)據(jù) 231
12.3.7 創(chuàng)建日記更新用例 234
12.3.8 重構(gòu)日記修改Presenter 235
12.4 VIPER架構(gòu) 238
12.4.1 什么是VIPER架構(gòu) 238
12.4.2 VIPER架構(gòu)的層級(jí)劃分 239
12.4.3 創(chuàng)建Interactor 240
12.4.4 在協(xié)議中加入Interactor 241
12.4.5 使用Interactor 242
12.4.6 創(chuàng)建Router 242
12.4.7 在協(xié)議中加入Router 244
12.4.8 使用Router 244
12.5 Riblets架構(gòu) 245
12.5.1 什么是Riblets架構(gòu) 245
12.5.2 Riblets架構(gòu)的組件 246
12.6 小結(jié) 247
第13 Fragmentless:Fragment反對(duì)者 248
13.1 什么是Fragmentless 248
13.2 Fragmentless實(shí)戰(zhàn) 249
13.2.1 創(chuàng)建View 249
13.2.2 View附加狀態(tài)判斷 252
13.2.3 修改布局文件 253
13.2.4 修改Activity 254
13.3 小結(jié) 255
第14章 Conductor:短兵利刃 257
14.1 什么是Conductor 257
14.2 Conductor實(shí)戰(zhàn) 258
14.2.1 配置Conductor 259
14.2.2 Controller基類處理 259
14.2.3 重構(gòu)Fragment 260
14.2.4 Controller的上下文 261
14.2.5 Controller活躍態(tài) 262
14.2.6 使用路由 262
14.2.7 日記修改頁(yè)面處理 263
14.2.8 Controller構(gòu)造方法 265
14.2.9 頁(yè)面銷(xiāo)毀 266
14.2.10 頁(yè)面跳轉(zhuǎn) 266
14.3 小結(jié) 267
第15章 插件化:模塊插拔 268
15.1 什么是插件化 268
15.2 插件化實(shí)戰(zhàn) 269
15.2.1 配置插件化框架 269
15.2.2 配置主模塊 270
15.2.3 驗(yàn)證環(huán)境配置 270
15.2.4 框架初始化 271
15.2.5 指定插件類型 272
15.2.6 配置路由信息 272
15.2.7 創(chuàng)建加載頁(yè)面 275
15.2.8 路由攜帶參數(shù)跳轉(zhuǎn) 276
15.2.9 配置插件的Launcher 276
15.2.10 編譯 277
15.3 小結(jié) 278
第16章 總結(jié) 279
16.1 架構(gòu)演進(jìn) 279
16.1.1 MVX系列架構(gòu) 279
16.1.2 The Clean Architecture系列架構(gòu) 280
16.1.3 模塊化系列架構(gòu) 281
16.2 選擇合適的架構(gòu) 282
16.2.1 認(rèn)清你的團(tuán)隊(duì)規(guī)模 282
16.2.2 目前存在的問(wèn)題 283
16.2.3 大型技術(shù)團(tuán)隊(duì)架構(gòu)選型 283
16.2.4 中小型技術(shù)團(tuán)隊(duì)架構(gòu)選型 284
16.2.5 獨(dú)立開(kāi)發(fā)者架構(gòu)選型 285
16.3 復(fù)盤(pán) 285,第1章 什么是架構(gòu) 1
1.1 架構(gòu)設(shè)計(jì)理念 1
1.1.1 軟件架構(gòu)的起源 1
1.1.2 架構(gòu)設(shè)計(jì)三要素 2
1.1.3 什么是優(yōu)秀的軟件架構(gòu)設(shè)計(jì) 2
1.1.4 軟件架構(gòu)設(shè)計(jì)的關(guān)注點(diǎn) 3
1.2 軟件架構(gòu)設(shè)計(jì)的本質(zhì)和目的 3
1.2.1 做出決策 3
1.2.2 降低軟件熵 4
1.3 架構(gòu)設(shè)計(jì)思維 4
1.3.1 簡(jiǎn)化思維 4
1.3.2 分層思維 5
1.3.3 分治思維 6
1.3.4 迭代思維 6
1.4 架構(gòu)設(shè)計(jì)模式原則 7
1.4.1 單一職責(zé)原則 7
1.4.2 開(kāi)放封閉原則 8
1.4.3 里氏替換原則 9
1.4.4 依賴倒置原則 9
1.4.5 接口分離原則 10
1.5 架構(gòu)設(shè)計(jì)步驟 11
1.5.1 認(rèn)識(shí)系統(tǒng) 11
1.5.2 設(shè)計(jì)系統(tǒng) 12
1.5.3 創(chuàng)建系統(tǒng) 14
1.5.4 收集反饋 14
1.6 小結(jié) 15
第2章 MVC架構(gòu):表現(xiàn)層分離 16
2.1 什么是MVC 16
2.1.1 MVC的誕生 16
2.1.2 MVC的分層與職責(zé) 17
2.1.3 MVC在移動(dòng)開(kāi)發(fā)中的爭(zhēng)議 18
2.2 MVC的模式 19
2.2.1 被動(dòng)模式 19
2.2.2 主動(dòng)模式 19
2.2.3 觀察者模式 20
2.2.4 被動(dòng)模式與主動(dòng)模式的區(qū)別 21
2.3 MVC的核心思想 21
2.4 小結(jié) 22
第3章 實(shí)戰(zhàn):基于MVC架構(gòu)設(shè)計(jì)的日記App 23
3.1 層級(jí)職責(zé)劃分 23
3.2 準(zhǔn)備階段 24
3.2.1 準(zhǔn)備、創(chuàng)建View 24
3.2.2 清單文件Manifest配置 26
3.2.3 初始化Fragment 27
3.3 創(chuàng)建View 28
3.4 數(shù)據(jù)處理 31
3.4.1 創(chuàng)建Model 31
3.4.2 創(chuàng)建本地?cái)?shù)據(jù)源 32
3.4.3 數(shù)據(jù)持久化工具 33
3.4.4 實(shí)現(xiàn)本地?cái)?shù)據(jù)源 34
3.4.5 填充測(cè)試數(shù)據(jù) 36
3.4.6 使用數(shù)據(jù)倉(cāng)庫(kù)管理數(shù)據(jù) 37
3.5 創(chuàng)建Controller 40
3.5.1 Controller初始化 40
3.5.2 創(chuàng)建Adapter 41
3.5.3 創(chuàng)建ViewHolder 43
3.5.4 Controller的協(xié)調(diào)工作 44
3.6 運(yùn)行App 48
3.7 實(shí)現(xiàn)主動(dòng)模式的MVC 49
3.7.1 改造Model 49
3.7.2 注冊(cè)觀察者 50
3.8 小結(jié) 50
第4章 MVP架構(gòu):開(kāi)始解耦 52
4.1 什么是MVP 52
4.1.1 MVP架構(gòu)的起源 52
4.1.2 MVP的分層與職責(zé) 52
4.2 MVP的核心思想 53
4.2.1 面向接口編程 53
4.2.2 德墨忒爾定律 54
4.3 MVP與MVC的區(qū)別 55
4.4 MVP模式存在的問(wèn)題 56
4.4.1 責(zé)任過(guò)重的Presenter 56
4.4.2 業(yè)務(wù)邏輯無(wú)法復(fù)用 56
4.4.3 急劇擴(kuò)增的接口數(shù)量 57
4.5 如何解決Presenter的復(fù)用問(wèn)題 57
4.5.1 提供工具類 57
4.5.2 提供多對(duì)一的Presenter 57
4.5.3 分離出Interactor層 58
4.6 小結(jié) 59
第5章 實(shí)戰(zhàn):MVP架構(gòu)設(shè)計(jì) 60
5.1 層級(jí)職責(zé)劃分 60
5.2 準(zhǔn)備工作 60
5.2.1 定義基礎(chǔ)View接口 60
5.2.2 定義基礎(chǔ)Presenter接口 61
5.3 重構(gòu):從MVC到MVP 61
5.3.1 創(chuàng)建Presenter 61
5.3.2 改造View 62
5.3.3 傳入Presenter實(shí)例 63
5.3.4 開(kāi)發(fā)過(guò)程中Presenter和View的直接依賴 63
5.3.5 Presenter生命周期的處理 64
5.3.6 列表Adapter的處理 64
5.3.7 展示數(shù)據(jù)的處理 65
5.3.8 對(duì)話框展示的處理 67
5.3.9 菜單的處理 68
5.3.10 實(shí)現(xiàn)面向接口設(shè)計(jì) 69
5.3.11 建立契約類 69
5.4 實(shí)現(xiàn)MVP模式:日記修改功能 70
5.4.1 創(chuàng)建日記修改Activity 71
5.4.2 創(chuàng)建日記修改Fragment 72
5.4.3 添加“完成”按鈕 74
5.4.4 創(chuàng)建日記修改Presenter 75
5.4.5 日記操作處理 76
5.4.6 頁(yè)面跳轉(zhuǎn)處理 77
5.4.7 刪除舊有的修改日記UI 78
5.4.8 修改為面向接口設(shè)計(jì) 79
5.5 小結(jié) 79
第6章 MVVM架構(gòu):雙向綁定 81
6.1 什么是MVVM 81
6.1.1 MVVM架構(gòu)的起源 81
6.1.2 MVVM的分層與職責(zé) 82
6.2 MVVM的核心思想 82
6.2.1 進(jìn)一步解耦 82
6.2.2 數(shù)據(jù)驅(qū)動(dòng) 83
6.2.3 雙向綁定 83
6.3 架構(gòu)模式對(duì)比 84
6.3.1 MVC與MVVM 84
6.3.2 MVP與MVVM 85
6.4 MVVM存在的問(wèn)題 86
6.4.1 ViewModel難以復(fù)用 86
6.4.2 學(xué)習(xí)成本高 86
6.4.3 調(diào)試?yán)щy 86
6.5 小結(jié) 87
第7章 實(shí)戰(zhàn):MVVM架構(gòu)設(shè)計(jì) 88
7.1 什么是DataBinding 88
7.2 重構(gòu):從MVP到MVVM 88
7.2.1 配置DataBinding支持 89
7.2.2 修改Presenter為ViewModel 89
7.2.3 消除契約類 90
7.2.4 轉(zhuǎn)換布局文件 92
7.2.5 在布局中加入變量和表達(dá)式 93
7.2.6 ViewModel繼承BaseObservable 94
7.2.7 在XML布局文件中定義列表數(shù)據(jù)屬性 95
7.2.8 使用BindingAdapter處理自定義屬性 97
7.2.9 繪制View布局 98
7.2.10 為View屬性賦值 99
7.2.11 找到XML中的View 100
7.2.12 ObservableField原理 100
7.2.13 使用ObservableField 101
7.2.14 使用ObservableList 103
7.3 小結(jié) 104
第8章 依賴注入:Dagger2鋒利的“匕首” 105
8.1 什么是Dagger 105
8.1.1 依賴注入 105
8.1.2 編譯時(shí)注解解析 107
8.2 實(shí)現(xiàn):將Dagger2加入MVP 108
8.2.1 配置Dagger2 108
8.2.2 確定數(shù)據(jù)倉(cāng)庫(kù)改造目標(biāo) 108
8.2.3 改造數(shù)據(jù)倉(cāng)庫(kù) 109
8.2.4 Inject注解 110
8.2.5 Component注解 111
8.2.6 Module注解 114
8.2.7 Provides注解 115
8.2.8 Scope注解 117
8.2.9 Singleton注解 117
8.2.10 Scope注解和Singleton注解的實(shí)現(xiàn)原理 118
8.2.11 日記列表模塊依賴關(guān)系分析 120
8.2.12 創(chuàng)建日記列表模塊Component 120
8.2.13 創(chuàng)建日記列表Presenter Module 121
8.2.14 Component的dependencies屬性 123
8.3 存在的問(wèn)題 125
8.3.1 學(xué)習(xí)成本極高 125
8.3.2 短期內(nèi)開(kāi)發(fā)效率低 125
8.3.3 靈活性不良好 126
8.4 小結(jié) 126
第9章 函數(shù)響應(yīng)式框架:優(yōu)雅的RxJava2 127
9.1 什么是RxJava 127
9.2 RxJava2的核心思想 128
9.2.1 函數(shù)響應(yīng)式編程 128
9.2.2 背壓 129
9.2.3 鏈?zhǔn)秸{(diào)用 129
9.3 實(shí)戰(zhàn):將RxJava2加入MVP 130
9.3.1 配置RxJava2 130
9.3.2 Flowable 131
9.3.3 響應(yīng)式拉取 132
9.3.4 修改數(shù)據(jù)源接口 133
9.3.5 修改本地?cái)?shù)據(jù)源 133
9.3.6 Just操作符 134
9.3.7 Empty操作符 135
9.3.8 FromIterable操作符 135
9.3.9 To操作符 136
9.3.10 Subscriber和事件流 137
9.3.11 修改數(shù)據(jù)倉(cāng)庫(kù) 137
9.3.12 FlatMap操作符 139
9.3.13 Map操作符 140
9.3.14 修改Presenter 141
9.3.15 CompositeDisposable和Disposable 142
9.3.16 Presenter生命周期 143
9.4 存在的問(wèn)題 144
9.5 小結(jié) 144
第10章 AAC:搭建生命周期感知架構(gòu) 145
10.1 什么是AAC 145
10.2 AAC的核心思想 146
10.2.1 關(guān)注點(diǎn)分離 146
10.2.2 模型驅(qū)動(dòng)界面 147
10.3 ViewModel LiveData 148
10.3.1 DataBinding 148
10.3.2 Gradle依賴配置 149
10.3.3 AAC中的ViewModel 149
10.3.4 使用ViewModel 150
10.3.5 使用ViewModelProviders創(chuàng)建ViewModel 151
10.3.6 什么是LiveData 152
10.3.7 MutableLiveData 153
10.3.8 創(chuàng)建LiveData 154
10.3.9 LiveData更新 155
10.3.10 LiveData接收變化 156
10.4 LifeCycle 156
10.4.1 生命周期 157
10.4.2 LifecycleObserver 158
10.4.3 LifecycleOwner 159
10.5 Room 160
10.5.1 Room的組成 160
10.5.2 實(shí)體 161
10.5.3 數(shù)據(jù)訪問(wèn)對(duì)象DAO 163
10.5.4 Room依賴配置 164
10.5.5 定義實(shí)體 164
10.5.6 創(chuàng)建Dao 165
10.5.7 創(chuàng)建數(shù)據(jù)庫(kù)管理器 166
10.5.8 線程處理 168
10.5.9 修改本地?cái)?shù)據(jù)源 169
10.5.10 數(shù)據(jù)庫(kù)升級(jí) 172
10.6 小結(jié) 173
第11章 組件化架構(gòu):極速運(yùn)行 174
11.1 什么是組件化 174
11.2 組件化的核心思想 175
11.2.1 軟件復(fù)用 175
11.2.2 信息隱藏 176
11.2.3 快速運(yùn)行 177
11.3 組件分離 178
11.3.1 組件層級(jí)劃分 178
11.3.2 組件劃分 179
11.3.3 創(chuàng)建Module 180
11.3.4 組件依賴關(guān)系 183
11.3.5 復(fù)用Gradle配置 187
11.3.6 公共資源組件 189
11.3.7 基礎(chǔ)組件 191
11.3.8 移動(dòng)依賴 194
11.3.9 Gradle版本號(hào)管理 194
11.3.10 處理Context 197
11.3.11 公共組件 198
11.3.12 日記列表展示組件 200
11.3.13 日記添加修改組件 202
11.3.14 Gradle Plugin沖突 204
11.3.15 運(yùn)行主Module 204
11.4 使用路由 206
11.4.1 路由配置 206
11.4.2 使用Route跳轉(zhuǎn) 207
11.4.3 攜帶參數(shù)跳轉(zhuǎn) 208
11.5 組件運(yùn)行 210
11.5.1 切換開(kāi)關(guān) 210
11.5.2 組件配置 212
11.5.3 Manifest文件配置 212
11.5.4 集成運(yùn)行 215
11.6 組件合并 216
11.6.1 組件命名沖突 216
11.6.2 Manifest文件合并策略 217
11.6.3 資源文件沖突 218
11.6.4 資源文件合并策略 219
11.7 小結(jié) 220
第12章 The Clean Architecture:整潔的架構(gòu) 221
12.1 什么是The Clean Architecture 221
12.2 The Clean Architecture的核心思想 222
12.2.1 單向依賴規(guī)則 222
12.2.2 業(yè)務(wù)規(guī)則分離 223
12.2.3 簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)跨界 224
12.3 MVP-Clean架構(gòu) 224
12.3.1 用例的請(qǐng)求數(shù)據(jù)和響應(yīng)數(shù)據(jù) 224
12.3.2 用例的數(shù)據(jù)處理 226
12.3.3 用例的線程切換 228
12.3.4 創(chuàng)建用例 229
12.3.5 執(zhí)行用例 230
12.3.6 封裝請(qǐng)求數(shù)據(jù) 231
12.3.7 創(chuàng)建日記更新用例 234
12.3.8 重構(gòu)日記修改Presenter 235
12.4 VIPER架構(gòu) 238
12.4.1 什么是VIPER架構(gòu) 238
12.4.2 VIPER架構(gòu)的層級(jí)劃分 239
12.4.3 創(chuàng)建Interactor 240
12.4.4 在協(xié)議中加入Interactor 241
12.4.5 使用Interactor 242
12.4.6 創(chuàng)建Router 242
12.4.7 在協(xié)議中加入Router 244
12.4.8 使用Router 244
12.5 Riblets架構(gòu) 245
12.5.1 什么是Riblets架構(gòu) 245
12.5.2 Riblets架構(gòu)的組件 246
12.6 小結(jié) 247
第13 Fragmentless:Fragment反對(duì)者 248
13.1 什么是Fragmentless 248
13.2 Fragmentless實(shí)戰(zhàn) 249
13.2.1 創(chuàng)建View 249
13.2.2 View附加狀態(tài)判斷 252
13.2.3 修改布局文件 253
13.2.4 修改Activity 254
13.3 小結(jié) 255
第14章 Conductor:短兵利刃 257
14.1 什么是Conductor 257
14.2 Conductor實(shí)戰(zhàn) 258
14.2.1 配置Conductor 259
14.2.2 Controller基類處理 259
14.2.3 重構(gòu)Fragment 260
14.2.4 Controller的上下文 261
14.2.5 Controller活躍態(tài) 262
14.2.6 使用路由 262
14.2.7 日記修改頁(yè)面處理 263
14.2.8 Controller構(gòu)造方法 265
14.2.9 頁(yè)面銷(xiāo)毀 266
14.2.10 頁(yè)面跳轉(zhuǎn) 266
14.3 小結(jié) 267
第15章 插件化:模塊插拔 268
15.1 什么是插件化 268
15.2 插件化實(shí)戰(zhàn) 269
15.2.1 配置插件化框架 269
15.2.2 配置主模塊 270
15.2.3 驗(yàn)證環(huán)境配置 270
15.2.4 框架初始化 271
15.2.5 指定插件類型 272
15.2.6 配置路由信息 272
15.2.7 創(chuàng)建加載頁(yè)面 275
15.2.8 路由攜帶參數(shù)跳轉(zhuǎn) 276
15.2.9 配置插件的Launcher 276
15.2.10 編譯 277
15.3 小結(jié) 278
第16章 總結(jié) 279
16.1 架構(gòu)演進(jìn) 279
16.1.1 MVX系列架構(gòu) 279
16.1.2 The Clean Architecture系列架構(gòu) 280
16.1.3 模塊化系列架構(gòu) 281
16.2 選擇合適的架構(gòu) 282
16.2.1 認(rèn)清你的團(tuán)隊(duì)規(guī)模 282
16.2.2 目前存在的問(wèn)題 283
16.2.3 大型技術(shù)團(tuán)隊(duì)架構(gòu)選型 283
16.2.4 中小型技術(shù)團(tuán)隊(duì)架構(gòu)選型 284
16.2.5 獨(dú)立開(kāi)發(fā)者架構(gòu)選型 285
16.3 復(fù)盤(pán) 2852100433B
本書(shū)覆蓋了移動(dòng)開(kāi)發(fā)中涉及的多種架構(gòu)模式,基于Android平臺(tái)對(duì)架構(gòu)模式進(jìn)行實(shí)戰(zhàn),可以幫助入門(mén)開(kāi)發(fā)者了解架構(gòu)模式,進(jìn)階開(kāi)發(fā)者掌握架構(gòu)模式,技術(shù)領(lǐng)導(dǎo)者進(jìn)行架構(gòu)選型。本書(shū)內(nèi)容包括:流行架構(gòu)模型MVX系列——MVC架構(gòu)、MVP架構(gòu)、MVVM架構(gòu),依賴注入框架Dagger2,函數(shù)響應(yīng)式框架RxJava2,Google推薦的生命周期感知架構(gòu)組件AAC,整潔的架構(gòu)“The Clean Architecture”和組件化架構(gòu)的運(yùn)用方法與實(shí)戰(zhàn)。本書(shū)語(yǔ)言精練,內(nèi)容清晰,代碼易于理解,適合計(jì)算機(jī)相關(guān)行業(yè)的從業(yè)者閱讀與學(xué)習(xí)。
什么是系統(tǒng)架構(gòu)設(shè)計(jì)?
不同的架構(gòu)方法論,會(huì)將架構(gòu)分為不同視圖,每個(gè)視圖側(cè)重某一個(gè)方面、領(lǐng)域的問(wèn)題。比如希賽推的ADMEMS架構(gòu)體系,分為以下幾種視圖:1. 數(shù)據(jù)架構(gòu):描述數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、格式等方面。2. 物理架構(gòu):描述機(jī)器...
軟件開(kāi)發(fā)的架構(gòu)設(shè)計(jì)指的是什么?
軟件架構(gòu)(softwarearchitecture)是一系列相關(guān)的抽象模式,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。 軟件架構(gòu)是一個(gè)系統(tǒng)的草圖。軟件架構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。各個(gè)組件之間的連...
什么是產(chǎn)品功能架構(gòu)設(shè)計(jì)
產(chǎn)品功能架構(gòu)設(shè)計(jì)是從多種視角分析、設(shè)計(jì),輸出架構(gòu)設(shè)計(jì)文檔,以實(shí)現(xiàn)產(chǎn)品的非功能屬性。
格式:pdf
大?。?span id="lojeq4r" class="single-tag-height">912KB
頁(yè)數(shù): 26頁(yè)
評(píng)分: 4.5
第八章 三層架構(gòu)設(shè)計(jì) 在軟件體系架構(gòu)設(shè)計(jì)中,分層式結(jié)構(gòu)是最常見(jiàn),也是重要的一種結(jié)構(gòu)。微軟推薦的分 層式結(jié)構(gòu)一般分為三層,從下至上分別為:數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)邏輯層、表示層。 8.1 三層架構(gòu)概述 與網(wǎng)絡(luò)協(xié)議是分層一樣,軟件設(shè)計(jì)也要進(jìn)行分層,分層的目的是為了實(shí)現(xiàn)“高內(nèi)聚、 低耦合”,采用“分而治之”的思想,把任務(wù)劃分成子任務(wù),逐個(gè)解決,易于控制,易于延 展,易于多個(gè)進(jìn)行項(xiàng)目合作。 所謂的三層架構(gòu)就是將整個(gè)業(yè)務(wù)應(yīng)用劃分為表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層,由數(shù) 據(jù)訪問(wèn)層去訪問(wèn)數(shù)據(jù)庫(kù),十分有利于系統(tǒng)的開(kāi)發(fā)、維護(hù)、部署和擴(kuò)展。 那么我們?yōu)槭裁匆褂梅謱娱_(kāi)發(fā)呢,它有什么獨(dú)特的優(yōu)勢(shì)呢? 對(duì)于簡(jiǎn)單的應(yīng)用來(lái)說(shuō),沒(méi)有必要搞得那么復(fù)雜,可以不進(jìn)行分層,但是對(duì)一個(gè)大型系 統(tǒng)來(lái)說(shuō)這樣的設(shè)計(jì)的缺陷就很?chē)?yán)重了。 面向?qū)ο蟮某绦蛟O(shè)計(jì)模式追求的是代碼的通用性, 可 移植性,可維護(hù)性、 功能擴(kuò)展, 分層開(kāi)發(fā)這種設(shè)計(jì)模式體現(xiàn)了面向?qū)?
格式:pdf
大?。?span id="myk4eps" class="single-tag-height">912KB
頁(yè)數(shù): 1頁(yè)
評(píng)分: 4.7
**** 科 技(河源)有 限 公 司 組 織 架 構(gòu) 圖 (注:以 7000~7500臺(tái)/天之日產(chǎn)能設(shè)定 --3 條線 ) 董事長(zhǎng) 總經(jīng)理 工程 /品質(zhì)經(jīng)理 課長(zhǎng) 行政經(jīng)理 I Q C P Q C Q A 串 激 車(chē) 間 定 子 總 成 A 線 馬 達(dá) 總 成 A 線 定 子 總 成 B 線 馬 達(dá) 總 成 B 線 文 員 設(shè) 備 組 領(lǐng) 料 員 倉(cāng) 庫(kù) 收 錄 賬 倉(cāng) 庫(kù) 備 料 送 貨 物 控 生 管 采 購(gòu) 人 事 業(yè) 務(wù) 跟 單 + 文 控 高 速 沖 前 加 工 內(nèi) 繞 (含經(jīng)理 1人-共6人 ) 1 人 2 人 1 人 待 定 組長(zhǎng) 1人 組長(zhǎng) 1人 1 人 機(jī)修 2人 1 人 1 人 1 人 1 人 1 人 1 人 1 人 (含經(jīng)理 1人-共9人) (含經(jīng)理 1人-共7人 ) 課長(zhǎng) /兼PE工程 生產(chǎn)經(jīng)理 課長(zhǎng) 馬達(dá)車(chē)間 五金車(chē)間
《架構(gòu)實(shí)戰(zhàn):軟件架構(gòu)設(shè)計(jì)的過(guò)程》從基本原理入手,介紹軟件架構(gòu)設(shè)計(jì)過(guò)程中涉及的一些概念、流程、方法、用到的工作產(chǎn)品及可重用的資源,從第6章開(kāi)始,通過(guò)介紹一個(gè)具體的案例來(lái)闡述如何定義需求、創(chuàng)建邏輯架構(gòu)、創(chuàng)建物理架構(gòu)。在第10章“進(jìn)階”中,作者補(bǔ)充說(shuō)明了架構(gòu)師和軟件開(kāi)發(fā)項(xiàng)目其他方面的關(guān)系,后面又說(shuō)明了各種軟件開(kāi)發(fā)項(xiàng)目可能存在的困難及相應(yīng)的處理方法。
《架構(gòu)實(shí)戰(zhàn):軟件架構(gòu)設(shè)計(jì)的過(guò)程》理論結(jié)合實(shí)踐,介紹了一些可以應(yīng)用到整個(gè)或部分的架構(gòu)設(shè)計(jì)流程中的最佳方法。不管你是一位資深的架構(gòu)師還是一位有志于成為架構(gòu)師的初級(jí)使用者,通過(guò)閱讀《架構(gòu)實(shí)戰(zhàn):軟件架構(gòu)設(shè)計(jì)的過(guò)程》都能從中獲益。
作者:(美國(guó))伊樂(lè)斯(Peter Eeles) (美國(guó))克里普斯(Peter Cripps) 譯者:蔡黃輝 馬文濤
伊樂(lè)斯(Peter Eeles),IBM RationaI Software的高級(jí)IT架構(gòu)師,主要工作是進(jìn)行架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)大規(guī)模、分布式的系統(tǒng)。他目前致力于幫助組織提高軟件開(kāi)發(fā)能力。除本書(shū)外,Eeles還與人合作編寫(xiě)了《Building J2EE Applicatio with theRatio rlaI Unifjed Process》(Addisorl-WesIey,2003)和《BuiIdlng Busi rless Objects》(Wiley,1998)。
克里普斯(Peter Cripps),IBM Global Business Services的高級(jí)IT架構(gòu)師,專注于應(yīng)用組件和基于服務(wù)的開(kāi)發(fā)技術(shù),并在整個(gè)IBM公司推廣架構(gòu)設(shè)計(jì)最佳實(shí)踐,目前從事IBM Unified Method FrarTlework的開(kāi)發(fā)工作。
物聯(lián)網(wǎng)架構(gòu)設(shè)計(jì)實(shí)戰(zhàn)——從云端到傳感器
作者:[美]佩里·萊亞 著 陳凱 譯
定價(jià):149元
印次:1-1
ISBN:9787302569237
出版日期:2021.02.01
印刷日期:2021.01.29