總金額: 會員:NT$ 0 非會員:NT$ 0 
(此金額尚未加上運費)
電子電信技術 電子電信技術 通信與無線電學應用
 
 
 
 
移動開發架構設計實戰^tn
 作  者: 李云鵬
 出版單位: 電子工業
 出版日期: 2019.11
 進貨日期: 2019/12/9
 ISBN: 9787121375071
 開  本: 16 開    
 定  價: 668
 售  價: 534
  會 員 價: 490
推到Facebook 推到Plurk 推到Twitter
前往新書區 書籍介紹 購物流程  
 
編輯推薦:

專注:50 實戰案例。填補移動開發架構設計書籍空白
全面:10 架構模式。流行移動端架構全面囊括
實戰:10 系統設計實戰。代碼注釋豐富,易於理解
易讀:學習門檻低。內容精練,語言通俗易懂


內容簡介:

本書覆蓋了移動開發中涉及的多種架構模式,基於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等多種架構模式進行了詳細的闡述,並輔以案例講解。通過講解多個實戰案例回答了上述問題。本書非常適合移動開發領域的初、中級工程師閱讀,也適合高級工程師閱讀,以作參考。

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




前言


過去,我常常尋找一些關於移動端架構模式的資料,以幫助自己全面了解架構模式,並針對企業軟件架構存在的問題,指導自己進行架構選型。在現今的技術盛世中,各種架構模式“百花齊放”,然而每種架構模式的概念都比較晦澀難懂,這不僅使得一部分初學者“從入門到放棄”,也讓進階人員耗費了太多的學習成本。
通過博客學習架構需要查閱大量的資料,而且博客中的技術資料學習門檻相對較高,所以,我總結自身經驗,寫成了這本書,以幫助入門開發者了解架構模式,進階開發者掌握架構模式,技術領導者進行架構選型,並填補移動端或Android架構實戰書籍的空白。
架構設計在現今已經成為軟件開發必不可少的環節,而架構學習和架構選型往往是一個困難的“工程”。在軟件設計之初,人們習慣使用“麵條代碼”進行開發,系統代碼並無結構可言,由此帶來的本質問題就是軟件的可維護性和可靠性越來越差,軟件的維護成本也越來越高,直到軟件危機爆發,人們才開始意識到軟件架構的重要性。
軟件架構設計可以幫助我們規劃系統模型,做出決策,降低軟件熵,提供系統可維護性和可靠性,減少企業軟件維護成本,使得系統更加有序。
本書中的代碼都將上傳到開源社區GitHub中,如有錯誤,還請諒解,歡迎大家在GitHub或我的博客——林鹿(http://blog.imuxuan.com)中指出。

本書特色
1.內容豐富,語言通俗易懂,學習門檻低
閱讀本書與閱讀技術博客不同的是,架構模式的概念部分清晰易懂,語言精練,包含各種架構的總結性內容。我一直在思索如何表述,能讓軟件開發人員輕鬆地理解架構設計中晦澀難懂的概念,所以在每章中,加入了對於架構相關概念的通俗易懂的闡述,以及豐富的圖片,以便幫助讀者建立架構的記憶模型。
2.架構覆蓋廣泛,代碼注釋豐富,易於理解
本書用大量篇幅介紹了MVX系列架構——MVC架構、MVP架構和MVVM架構,但軟件架構從不是一成不變的,所以,本書還介紹了組件化和插件化等讀者可能會加入自身架構中的技術。而對架構實戰的介紹是通過還原一個架構模式的重構過程來完成的,代碼注釋豐富,易於理解。
3.填補了移動端架構設計和Android架構設計與實戰總結類書籍的空白
過去,我一直希望有這樣一本關於架構模式實戰總結與指導類的書籍,能夠幫助企業開發人員進行架構學習和選型。軟件架構設計是一個經久不衰的話題,其生命週期較長,而架構之間的區別往往在於“合適”與“不合適”,本書可以幫助你全面了解移動端的流行架構模式,並根據自身所需進行架構學習和選型。

本書內容及體系結構
本書從內容上分為三部分,共16章。
第一部分主要介紹架構的基本概念。
第二部分列舉了當下比較流行的幾種架構模式,包括MVX系列架構——MVC架構、MVP架構、MVVM架構,以及依賴注入框架Dagger2、函數響應式框架RxJava2、Google官方推薦的Android Architecture Components和組件化架構。
第三部分列舉了更多值得推薦的,但目前並不是十分常見的框架,其中包括整潔的架構“The Clean Architecture”、Fragment反對者系列的Fragmentless、Conductor,還介紹了插件化架構的運用方法與實戰。
第1章 什麼是架構
本章將從架構的起源講起,走入生活中的架構,探究架構的本質,掌握架構的原則,逐步深入,進而達到了解傳統的架構設計思想和設計流程的目的。如果你更注重實踐性的內容,可以從第2章開始閱讀;如果你更注重從一根“線”的“線頭”開始釐清思路,那麼,就要從本章開始閱讀,閱讀本章能夠使你更好地了解什麼是架構。
第2章 MVC架構:表現層分離
“麵條代碼”是一種沒有結構、緊耦合、“一氣呵成”的代碼形態。接觸“麵條代碼”你會發現,所有界面展示控制和業務邏輯都纏繞在一起,改動任意一處,都將使你苦不堪言。在無數次凌亂的修改整理後,你會感受到一種“剪不斷,理還亂”的痛苦。在探究架構的最佳實戰之路上,我們還要從MVC(Model-View-Controller)開始說起,本章將要分析的是經典的MVC架構模式。
第3章 實戰:基於MVC架構設計的日記App
本章將通過一個基於Android的日記App,來討論MVC架構的兩種模式——被動模式和主動模式是如何實現的。
第4章 MVP架構:開始解耦
前面的章節針對MVC架構模式進行了討論與實踐,這種模式雖然踐行了表現層分離,但難免會出現Massive View Controller(過重的視圖控制器)。本章將討論一種更流行的架構模式——MVP架構。
第5章 實戰:MVP架構設計
前面我們討論了日記App的MVC架構被動模式和主動模式的實現。本章將對日記App的MVC架構模式進行改造,使其成為MVP架構模式,並基於MVP架構模式添加新的功能。
第6章 MVVM架構:雙向綁定
前面的章節介紹了移動開發中的兩個經典架構模式——MVC架構和MVP架構。本章將介紹移動開發三大經典架構中的最後一種架構模式——MVVM架構。
第7章 實戰:MVVM架構設計
本章將會改造基於MVP架構設計的“我的日記”App,利用Google提供的數據綁定框架DataBinding,使其成為MVVM架構模式。
第8章 依賴注入:Dagger2鋒利的“匕首”
依賴注入在後端領域開發中是一項非常流行的設計模式,在Google接手了Dagger的開發工作後,依賴注入在移動端也日趨火熱。本章我們將在前面介紹的MVP架構的基礎上,通過講解Dagger2來使讀者了解依賴注入框架的使用方法,並將其應用在“我的日記”App中。
第9章 函數響應式框架:優雅的RxJava2
在單任務CPU時代,任務只能串聯執行,上一個任務沒有執行完,下一個任務就只能等待,這樣的任務處理效率極低;後來,多任務盛行起來,多個任務可以並行處理,帶來了效率的提升;再後來,多任務的模式被運用到每個任務中,一個任務可以被拆分成多個線程執行,每個線程可以並行處理,多線程的時代到來了,它開啟了併發,也開啟了響應式編程。本章將利用RxJava2實現函數響應式框架的設計。
第10章 AAC:搭建生命週期感知架構
本章將要介紹的是Android官方推薦的系列架構組件Android Architecture Components,其中包括生命週期感知組件、LiveData、ViewModel和Room數據庫的使用等。
第11章 組件化架構:極速運行
本章主要介紹各大科技公司使用的主流架構設計模式——組件化架構,這種架構可以讓你的工程組件更加清晰,提升軟件復用性,加快開發速度,降低測試成本。
第12章 The Clean Architecture:整潔的架構
本章將通過介紹三款符合The Clean Architecture思想的架構——MVP-Clean、VIPER和Riblets,使大家能夠對The Clean Architecture有更加全面的了解。
第13章 Fragmentless:Fragment反對者
Fragmentless架構踐行了Fragment反對者的思想,即Fragment會給程序的開發和維護帶來很多不必要的問題。本章將通過View代替Fragment,來為大家演示Fragmentless架構的實現。
第14章 Conductor:短兵利刃
Conductor是一個小巧精悍的框架,用來幫助移動應用實現基於View的開發,與上一章的Fragmentless架構基於同一核心思想。本章將在MVP架構設計的“我的日記”App的基礎上加入Conductor支持。
第15章 插件化:模塊插拔
本章介紹的是插件化框架,它與模塊化技術、組件化技術有著異曲同工之妙。熟練運用插件化技術,往往能給一個移動應用帶來非同凡響的體驗感。本章將通過分析一款插件化流行框架,來講解插件化架構。
第16章 總結
本章是對全書涉及的架構模式的總結,將會針對每種架構模式總結其特點,並給予你架構選型的建議。

本書讀者對象
本書適合任何對計算機技術感興趣或相關領域的從業人員閱讀,書中列舉了多種移動端的架構模式和使用方法,但架構設計未必侷限於某一平台,比如,MVC架構在後端開發中依舊廣泛流行。
尤其推薦以下人群閱讀本書:
·移動端進階工程師。
·移動開發愛好者及從業人員。
·計算機愛好者及從業人員。

 
  步驟一.
依據網路上的圖書,挑選你所需要的書籍,根據以下步驟進行訂購
選擇產品及數量 結 帳 輸入基本資料 取貨與付款方式
┌───────────────────────────────────────────────────┘
資料確定 確認結帳 訂單編號    

步驟二.
完成付款的程序後,若採用貨到付款等宅配方式,3~7天內 ( 例假日將延期一至兩天 ) 您即可收到圖書。若至分店門市取貨,一週內聯絡取書。

步驟三.
完成購書程序者,可利用 訂單查詢 得知訂單進度。

注意事項.
● 付款方式若為網路刷卡必須等" 2 ~ 3 個工作天"確認款項已收到,才會出貨.如有更改書籍數量請記得按更新購物車,謝謝。

● 大陸出版品封面老舊、磨痕、凹痕等均屬常態,除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。

● 至2018年起,因中國大陸環保政策,部分書籍配件以QR CODE取代光盤音頻mp3或dvd,已無提供實體光盤。如需使用學習配件,請掃描QR CODE 連結至當地網站註冊並通過驗證程序,方可下載使用。造成不便,敬請見諒。

● 我們將保留所有商品出貨權利,如遇缺書情形,訂單未達免運門檻運費需自行負擔。

預訂海外庫存.
商品到貨時間須4週,訂單書籍備齊後方能出貨,如果您有急用書籍,建議與【預訂海外庫存】商品分開訂購。