移动开发架构设计实战
全新正版 极速发货
¥
43.89
4.9折
¥
89
全新
库存3件
作者李云鹏 著
出版社电子工业出版社
ISBN9787121375071
出版时间2019-11
装帧平装
开本16开
定价89元
货号1201971704
上书时间2024-11-23
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
李云鹏,网易新闻架构技术组工程师,沐暄网创始人,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 什么是MVC16
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架构设计的日记App23
3.1 层级职责划分23
3.2 准备阶段24
3.2.1 准备、创建View24
3.2.2 清单文件Manifest配置26
3.2.3 初始化Fragment27
3.3 创建View28
3.4 数据处理31
3.4.1 创建Model31
3.4.2 创建本地数据源32
3.4.3 数据持久化工具33
3.4.4 实现本地数据源34
3.4.5 填充测试数据36
3.4.6 使用数据仓库管理数据37
3.5 创建Controller40
3.5.1 Controller初始化40
3.5.2 创建Adapter41
3.5.3 创建ViewHolder43
3.5.4 Controller的协调工作44
3.6 运行App48
3.7 实现主动模式的MVC49
3.7.1 改造Model49
3.7.2 注册观察者50
3.8 小结50
第4章 MVP架构:开始解耦52
4.1 什么是MVP52
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 责任过重的Presenter56
4.4.2 业务逻辑无法复用56
4.4.3 急剧扩增的接口数量57
4.5 如何解决Presenter的复用问题57
4.5.1 提供工具类57
4.5.2 提供多对一的Presenter57
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到MVP61
5.3.1 创建Presenter61
5.3.2 改造View62
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 创建日记修改Activity71
5.4.2 创建日记修改Fragment72
5.4.3 添加“完成”按钮74
5.4.4 创建日记修改Presenter75
5.4.5 日记操作处理76
5.4.6 页面跳转处理77
5.4.7 删除旧有的修改日记UI78
5.4.8 修改为面向接口设计79
5.5 小结79
第6章 MVVM架构:双向绑定81
6.1 什么是MVVM81
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与MVVM84
6.3.2 MVP与MVVM85
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 什么是DataBinding88
7.2 重构:从MVP到MVVM88
7.2.1 配置DataBinding支持89
7.2.2 修改Presenter为ViewModel89
7.2.3 消除契约类90
7.2.4 转换布局文件92
7.2.5 在布局中加入变量和表达式93
7.2.6 ViewModel继承BaseObservable94
7.2.7 在XML布局文件中定义列表数据属性95
7.2.8 使用BindingAdapter处理自定义属性97
7.2.9 绘制View布局98
7.2.10 为View属性赋值99
7.2.11 找到XML中的View100
7.2.12 ObservableField原理100
7.2.13 使用ObservableField101
7.2.14 使用ObservableList103
7.3 小结104
第8章 依赖注入:Dagger2锋利的“匕首”105
8.1 什么是Dagger105
8.1.1 依赖注入105
8.1.2 编译时注解解析107
8.2 实现:将Dagger2加入MVP108
8.2.1 配置Dagger2108
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 创建日记列表模块Component120
8.2.13 创建日记列表Presenter Module121
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章 函数响应式框架:优雅的RxJava2127
9.1 什么是RxJava127
9.2 RxJava2的核心思想128
9.2.1 函数响应式编程128
9.2.2 背压129
9.2.3 链式调用129
9.3 实战:将RxJava2加入MVP130
9.3.1 配置RxJava2130
9.3.2 Flowable131
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 修改Presenter141
9.3.15 CompositeDisposable和Disposable142
9.3.16 Presenter生命周期143
9.4 存在的问题144
9.5 小结144
第10章 AAC:搭建生命周期感知架构145
10.1 什么是AAC145
10.2 AAC的核心思想146
10.2.1 关注点分离146
10.2.2 模型驱动界面147
10.3 ViewModel+LiveData148
10.3.1 DataBinding148
10.3.2 Gradle依赖配置149
10.3.3 AAC中的ViewModel149
10.3.4 使用ViewModel150
10.3.5 使用ViewModelProviders创建ViewModel151
10.3.6 什么是LiveData152
10.3.7 MutableLiveData153
10.3.8 创建LiveData154
10.3.9 LiveData更新155
10.3.10 LiveData接收变化156
10.4 LifeCycle156
10.4.1 生命周期157
10.4.2 LifecycleObserver158
10.4.3 LifecycleOwner159
10.5 Room160
10.5.1 Room的组成160
10.5.2 实体161
10.5.3 数据访问对象DAO163
10.5.4 Room依赖配置164
10.5.5 定义实体164
10.5.6 创建Dao165
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 创建Module180
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 处理Context197
11.3.11 公共组件198
11.3.12 日记列表展示组件200
11.3.13 日记添加修改组件202
11.3.14 Gradle Plugin冲突204
11.3.15 运行主Module204
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 Architecture221
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 创建日记更新用例234
12.3.8 重构日记修改Presenter235
12.4 VIPER架构238
12.4.1 什么是VIPER架构238
12.4.2 VIPER架构的层级划分239
12.4.3 创建Interactor240
12.4.4 在协议中加入Interactor241
12.4.5 使用Interactor242
12.4.6 创建Router242
12.4.7 在协议中加入Router244
12.4.8 使用Router244
12.5 Riblets架构245
12.5.1 什么是Riblets架构245
12.5.2 Riblets架构的组件246
12.6 小结247
第13 Fragmentless:Fragment反对者248
13.1 什么是Fragmentless248
13.2 Fragmentless实战249
13.2.1 创建View249
13.2.2 View附加状态判断252
13.2.3 修改布局文件253
13.2.4 修改Activity254
13.3 小结255
第14章 Conductor:短兵利刃257
14.1 什么是Conductor257
14.2 Conductor实战258
14.2.1 配置Conductor259
14.2.2 Controller基类处理259
14.2.3 重构Fragment260
14.2.4 Controller的上下文261
14.2.5 Controller活跃态262
14.2.6 使用路由262
14.2.7 日记修改页面处理263
14.2.8 Controller构造方法265
14.2.9 页面销毁266
14.2.10 页面跳转266
14.3 小结267
第15章 插件化:模块插拔268
15.1 什么是插件化268
15.2 插件化实战269
15.2.1 配置插件化框架269
15.2.2 配置主模块270
15.2.3 验证环境配置270
15.2.4 框架初始化271
15.2.5 指定插件类型272
15.2.6 配置路由信息272
15.2.7 创建加载页面275
15.2.8 路由携带参数跳转276
15.2.9 配置插件的Launcher276
15.2.10 编译277
15.3 小结278
第16章 总结279
16.1 架构演进279
16.1.1 MVX系列架构279
16.1.2 The Clean Architecture系列架构280
16.1.3 模块化系列架构281
16.2 选择合适的架构282
16.2.1 认清你的团队规模282
16.2.2 目前存在的问题283
16.2.3 大型技术团队架构选型283
16.2.4 中小型技术团队架构选型284
16.2.5 独立开发者架构选型285
16.3 复盘285
内容摘要
本书覆盖了移动开发中涉及的多种架构模式,基于Android平台对架构模式进行实战,可以帮助入门开发者了解架构模式,进阶开发者掌握架构模式,技术领导者进行架构选型。本书内容包括:流行架构模型MVX系列——MVC架构、MVP架构、MVVM架构,依赖注入框架Dagger2,函数响应式框架RxJava2,Google推荐的生命周期感知架构组件AAC,整洁的架构“The Clean Architecture”和组件化架构的运用方法与实战。本书语言精练,内容清晰,代码易于理解,适合计算机相关行业的从业者阅读与学习。
主编推荐
— 没有更多了 —
以下为对购买帮助不大的评价