该示例(TODO-MVP)是后续各种示例演变的基础,它主要演示了在不带架构性框架的情况下实现M-V-P模式。其采用手动依赖注入的方式来提供本地数据源和远程数据源仓库。异步任务通过回调处理。
注意:MVP中View的概念是有所不同的:
- android.view.View类我们叫它 "Android View"
- MVP中从P接收命令的东西我们叫它”View”,后文说了,就是Fragment
Fragment
采用Fragment作为视图的载体有两个原因:
- Activity 和 Fragment分离恰好适合用来实现MVP:Activity是创建和连接View与Presenter的总控制器
- 适配平板设备的布局或多视图屏幕的场景都可利用Fragment框架的优势
关键概念
该App(指官方TODO-MVP示例)中有四个功能:
- Tasks
- TaskDetail
- AddEditTask
- Statistics
每个功能拥有下列代码分工:
- 定义VIew和Presenter之间的“契约”接口
- 一个Activity类负责创建Fragment和Presenter
- 一个Fragment类实现VIew接口
-
一个Presenter类实现Presenter接口
一般来说,业务逻辑存在于Presenter中并依赖View完成Android中UI相关的工作。
View中几乎不包含逻辑:它将Presenter的命令转换为UI动作,并监听用户动作传递给Presenter。
“契约”接口用于定义View和Presenter之间的联系。
(译注:
有人立马就问到M哪去了,官方实例里M是轻的,与Repository和DataSource概念分离。
网友评论

