新到貨2本75折
移動開發架構設計實戰

移動開發架構設計實戰

  • 定價:534
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

本書覆蓋了移動開發中涉及的多種架構模式,基於Android平臺對架構模式進行實戰,可以説明入門開發者瞭解架構模式,進階開發者掌握架構模式,技術領導者進行架構選型。本書內容包括:流行架構模型MVX系列——MVC架構、MVP架構、MVVM架構,依賴注入框架Dagger2,函數回應式框架RxJava2,Google推薦的生命週期感知架構組件AAC,整潔的架構“The Clean Architecture”和元件化架構的運用方法與實戰。本書語言精練,內容清晰,代碼易於理解,適合電腦相關行業的從業者閱讀與學習。
 

作者介紹

李雲鵬

網易新聞架構技術組工程師,沐暄網創始人,Oracle、Adobe等企業認證專家;10年互聯網經驗,曾就職于世界500強企業核心技術實驗室;于2009年創立沐暄網,2010年入圍鳳凰網“全球最具影響力的中文論壇100強”站長。

擅長移動端架構設計、專案重構與Intellij外掛程式開發等工作。參與網易新聞群組件化架構設計,視頻模組、統計模組等多模組重構工作,利用VIPER對用戶端基礎架構進行改良。喜歡創新和研究,作為第一發明人,申請了十余項專利和著作權。
 
 

目錄

第1章 什麼是架構 1
1.1 架構設計理念 1
1.1.1 軟體架構的起源 1
1.1.2 架構設計三要素 2
1.1.3 什麼是優秀的軟體架構設計 2
1.1.4 軟體架構設計的關注點 3
1.2 軟體架構設計的本質和目的 3
1.2.1 做出決策 3
1.2.2 降低軟體熵 4
1.3 架構設計思維 4
1.3.1 簡化思維 4
1.3.2 分層思維 5
1.3.3 分治思維 6
1.3.4 反覆運算思維 6
1.4 架構設計模式原則 7
1.4.1 單一職責原則 7
1.4.2 開放封閉原則 8
1.4.3 裡氏替換原則 9
1.4.4 依賴倒置原則 9
1.4.5 介面分離原則 10
1.5 架構設計步驟 11
1.5.1 認識系統 11
1.5.2 設計系統 12
1.5.3 創建系統 14
1.5.4 收集回饋 14
1.6 小結 15

第2章 MVC架構:表現層分離 16
2.1 什麼是MVC 16
2.1.1 MVC的誕生 16
2.1.2 MVC的分層與職責 17
2.1.3 MVC在移動開發中的爭議 18
2.2 MVC的模式 19
2.2.1 被動模式 19
2.2.2 主動模式 19
2.2.3 觀察者模式 20
2.2.4 被動模式與主動模式的區別 21
2.3 MVC的核心思想 21
2.4 小結 22

第3章 實戰:基於MVC架構設計的日記App 23
3.1 層級職責劃分 23
3.2 準備階段 24
3.2.1 準備、創建View 24
3.2.2 清單檔Manifest配置 26
3.2.3 初始化Fragment 27
3.3 創建View 28
3.4 資料處理 31
3.4.1 創建Model 31
3.4.2 創建本地資料來源 32
3.4.3 資料持久化工具 33
3.4.4 實現本地資料來源 34
3.4.5 填充測試資料 36
3.4.6 使用資料倉庫管理資料 37
3.5 創建Controller 40
3.5.1 Controller初始化 40
3.5.2 創建Adapter 41
3.5.3 創建ViewHolder 43
3.5.4 Controller的協調工作 44
3.6 運行App 48
3.7 實現主動模式的MVC 49
3.7.1 改造Model 49
3.7.2 註冊觀察者 50
3.8 小結 50

第4章 MVP架構:開始解耦 52
4.1 什麼是MVP 52
4.1.1 MVP架構的起源 52
4.1.2 MVP的分層與職責 52
4.2 MVP的核心思想 53
4.2.1 面向介面程式設計 53
4.2.2 德墨忒爾定律 54
4.3 MVP與MVC的區別 55
4.4 MVP模式存在的問題 56
4.4.1 責任過重的Presenter 56
4.4.2 業務邏輯無法複用 56
4.4.3 急劇擴增的介面數量 57
4.5 如何解決Presenter的複用問題 57
4.5.1 提供工具類 57
4.5.2 提供多對一的Presenter 57
4.5.3 分離出Interactor層 58
4.6 小結 59

第5章 實戰:MVP架構設計 60
5.1 層級職責劃分 60
5.2 準備工作 60
5.2.1 定義基礎View介面 60
5.2.2 定義基礎Presenter介面 61
5.3 重構:從MVC到MVP 61
5.3.1 創建Presenter 61
5.3.2 改造View 62
5.3.3 傳入Presenter實例 63
5.3.4 開發過程中Presenter和View的直接依賴 63
5.3.5 Presenter生命週期的處理 64
5.3.6 列表Adapter的處理 64
5.3.7 展示資料的處理 65
5.3.8 對話方塊展示的處理 67
5.3.9 功能表的處理 68
5.3.10 實現面向介面設計 69
5.3.11 建立契約類 69
5.4 實現MVP模式:日記修改功能 70
5.4.1 創建日記修改Activity 71
5.4.2 創建日記修改Fragment 72
5.4.3 添加“完成”按鈕 74
5.4.4 創建日記修改Presenter 75
5.4.5 日記操作處理 76
5.4.6 頁面跳轉處理 77
5.4.7 刪除舊有的修改日記UI 78
5.4.8 修改為面向介面設計 79
5.5 小結 79

第6章 MVVM架構:雙向綁定 81
6.1 什麼是MVVM 81
6.1.1 MVVM架構的起源 81
6.1.2 MVVM的分層與職責 82
6.2 MVVM的核心思想 82
6.2.1 進一步解耦 82
6.2.2 資料驅動 83
6.2.3 雙向綁定 83
6.3 架構模式對比 84
6.3.1 MVC與MVVM 84
6.3.2 MVP與MVVM 85
6.4 MVVM存在的問題 86
6.4.1 ViewModel難以複用 86
6.4.2 學習成本高 86
6.4.3 調試困難 86
6.5 小結 87

第7章 實戰:MVVM架構設計 88
7.1 什麼是DataBinding 88
7.2 重構:從MVP到MVVM 88
7.2.1 配置DataBinding支援 89
7.2.2 修改Presenter為ViewModel 89
7.2.3 消除契約類 90
7.2.4 轉換佈局檔 92
7.2.5 在佈局中加入變數和運算式 93
7.2.6 ViewModel繼承BaseObservable 94
7.2.7 在XML佈局檔中定義清單資料屬性 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 小結 104

第8章 依賴注入:Dagger2鋒利的“匕首” 105
8.1 什麼是Dagger 105
8.1.1 依賴注入 105
8.1.2 編譯時注解解析 107
8.2 實現:將Dagger2加入MVP 108
8.2.1 配置Dagger2 108
8.2.2 確定資料倉庫改造目標 108
8.2.3 改造資料倉庫 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注解的實現原理 118
8.2.11 日記清單模組依賴關係分析 120
8.2.12 創建日記清單模組Component 120
8.2.13 創建日記列表Presenter Module 121
8.2.14 Component的dependencies屬性 123
8.3 存在的問題 125
8.3.1 學習成本極高 125
8.3.2 短期內開發效率低 125
8.3.3 靈活性不良好 126
8.4 小結 126

第9章 函數回應式框架:優雅的RxJava2 127
9.1 什麼是RxJava 127
9.2 RxJava2的核心思想 128
9.2.1 函數回應式程式設計 128
9.2.2 背壓 129
9.2.3 鏈式調用 129
9.3 實戰:將RxJava2加入MVP 130
9.3.1 配置RxJava2 130
9.3.2 Flowable 131
9.3.3 回應式拉取 132
9.3.4 修改資料來源介面 133
9.3.5 修改本地資料來源 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 修改資料倉庫 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 存在的問題 144
9.5 小結 144

第10章 AAC:搭建生命週期感知架構 145
10.1 什麼是AAC 145
10.2 AAC的核心思想 146
10.2.1 關注點分離 146
10.2.2 模型驅動介面 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創建ViewModel 151
10.3.6 什麼是LiveData 152
10.3.7 MutableLiveData 153
10.3.8 創建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 實體 161
10.5.3 資料訪問物件DAO 163
10.5.4 Room依賴配置 164
10.5.5 定義實體 164
10.5.6 創建Dao 165
10.5.7 創建資料庫管理器 166
10.5.8 執行緒 168
10.5.9 修改本地資料來源 169
10.5.10 資料庫升級 172
10.6 小結 173

第11章 組件化架構:極速運行 174
11.1 什麼是組件化 174
11.2 組件化的核心思想 175
11.2.1 軟體複用 175
11.2.2 信息隱藏 176
11.2.3 快速運行 177
11.3 元件分離 178
11.3.1 組件層級劃分 178
11.3.2 組件劃分 179
11.3.3 創建Module 180
11.3.4 組件依賴關係 183
11.3.5 複用Gradle配置 187
11.3.6 公共資源組件 189
11.3.7 基礎組件 191
11.3.8 移動依賴 194
11.3.9 Gradle版本號管理 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 運行主Module 204
11.4 使用路由 206
11.4.1 路由配置 206
11.4.2 使用Route跳轉 207
11.4.3 攜帶參數跳轉 208
11.5 組件運行 210
11.5.1 切換開關 210
11.5.2 元件配置 212
11.5.3 Manifest檔配置 212
11.5.4 集成運行 215
11.6 組件合併 216
11.6.1 組件命名衝突 216
11.6.2 Manifest檔合併策略 217
11.6.3 資源檔衝突 218
11.6.4 資源檔合併策略 219
11.7 小結 220

第12章 The Clean Architecture:整潔的架構 221
12.1 什麼是The Clean Architecture 221
12.2 The Clean Architecture的核心思想 222
12.2.1 單向依賴規則 222
12.2.2 業務規則分離 223
12.2.3 簡單資料結構跨界 224
12.3 MVP-Clean架構 224
12.3.1 用例的請求資料和回應資料 224
12.3.2 用例的資料處理 226
12.3.3 用例的執行緒切換 228
12.3.4 創建用例 229
12.3.5 執行用例 230
12.3.6 封裝請求數據 231
12.3.7 創建日記更新
 

推薦序

Android系統自Google 2008年發佈以來, 經過十多年的發展,已經佔據了手持設備八成以上的市場份額。在此過程中,有很多非常優秀的開發者加入這個行業,移動開發經過近幾年的快速蓬勃發展,在傳統的設計思想上有了更多的更新和創新,同時也湧現出不少高效的工具。

軟體架構是對軟體整體結構與元件的抽象描述,但在實際專案和產品反覆運算中,架構不僅涉及軟體本身,還涉及團隊組成、業務現狀及發展方向、團隊文化、投入產出比等多方面。如何基於業務做出更合理的設計?如何平衡業務和技術?如何在做出決策後順利落地?從這些方面考慮,需要明確以下幾個問題:

·通用的架構有哪些?

·每個架構的適用場景和優缺點是什麼?

·架構的設計原則是什麼?

·架構之間是如何演化的?

·在架構設計實戰的過程中會遇到哪些問題?該如何解決?

作者從架構的定義開始,對MVC、MVP、MVVM等多種架構模式進行了詳細的闡述,並輔以案例講解。通過講解多個實戰案例回答了上述問題。本書非常適合移動開發領域的初、中級工程師閱讀,也適合高級工程師閱讀,以作參考。

——網易新聞技術總監 劉棉明
 
 

詳細資料

  • ISBN:9787121375071
  • 規格:平裝 / 285頁 / 16k / 19 x 26 x 1.43 cm / 普通級 / 單色印刷 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【科普、飲食、電腦】高寶電子書暢銷書展:人生就是選擇的總和,全展75折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬
  • 浪漫小說精選3本72折