移动开发架构设计实战 李云鹏 电子工业出版社 移动开发架构设计实战pdf下载

移动开发架构设计实战 李云鹏 电子工业出版社 移动开发架构设计实战百度网盘pdf下载

作者:
简介:移动开发架构设计实战 李云鹏 电子工业出版社 移动开发架构设计实战
出版社:
出版时间:2019-11
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

基本信息

书名:移动开发架构设计实战

定价:89.00元

作者:李云鹏

出版社:电子工业出版社

出版日期:2019-11-01

ISBN:9787121375071

字数:

页码:

版次:1

装帧:平塑勒

开本:16开

商品重量:0.4kg

编辑推荐


内容提要


本书覆盖了移动开发中涉及的多种架构模式,基于Android平台对架构模式进行实战,可以帮助入门开发者了解架构模式,进阶开发者掌握架构模式,技*进行架构选型。本书内容包括:流行架构模型MVX系列——MVC架构、MVP架构、MVVM架构,依赖注入框架Dagger2,函数响应式框架RxJava2,Google推荐的生命周期感知架构组件AAC,整洁的架构“The Clean Archite*ure”和组件化架构的运用方法与实战。本书语言精练,内容清晰,代码易于理解,适合计算机相关行业的从业者阅读与学习。

目录


章 什么是架构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 分离出Intera*or层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 创建日记修改A*ivity71
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 什么是D*aBinding88
7.2 重构:从MVP到MVVM88
7.2.1 配置D*aBinding支持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 In*e*注解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 Fl*Map作符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

0章 AAC:搭建生命周期感知架构145
10.1 什么是AAC145
10.2 AAC的核心思想146
10.2.1 关注点分离146
10.2.2 模型驱动界面147
10.3 ViewModel LiveD*a148
10.3.1 D*aBinding148
10.3.2 Gradle依赖配置149
10.3.3 AAC中的ViewModel149
10.3.4 使用ViewModel150
10.3.5 使用ViewModelProvide*创建ViewModel151
10.3.6 什么是LiveD*a152
10.3.7 MutableLiveD*a153
10.3.8 创建LiveD*a154
10.3.9 LiveD*a更新155
10.3.10 LiveD*a接收变化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 创建D*165
10.5.7 创建数据库管理器166
10.5.8 线程处理168
10.5.9 修改本地数据源169
10.5.10 数据库升级172
10.6 小结173

1章 组件化架构:极速运行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

2章 The Clean Archite*ure:整洁的架构221
12.1 什么是The Clean Archite*ure221
12.2 The Clean Archite*ure的核心思想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 创建日记更新

作者介绍


李云鹏,网易新闻架构技*组工程师,沐暄网创始人,Oracle、Adobe等企业认证专家;10年互联网经验,曾就职于世界500强企业核心技*实验室;于2009年创立沐暄网,2010年入围凤凰网“全球具影响力的中文论坛100强”站长。擅长移动端架构设计、项目重构与Intelli**件开发等工作。参与网易新闻组件化架构设计,视频模块、统计模块等多模块重构工作,利用VIPER对客户端基础架构进行改良。喜欢创新和研究,作为发明人,申请了十余项和著作权。

文摘


序言