MVP 谷歌Sample-- todo App (一)

笔记:? 学习下 google 给出的MVP 架构 git 项目地址:https://github.com/googlesamples/android-architecture.git 。 branch :todo-mvp

首先看一下 google 对这个分支的先容:Demonstrates a basicModel?View?Presenter(MVP) architecture and provides a foundation on which the other samples are built. This sample also acts as a reference point for comparing and contrasting the other samples in this project.

大意就是 这是一个最基本的标准 MVP 实现,是其他分支实现的基础,也是很好的对比标准。

demo 在androidstudio 中编译打开后,是一个类似记事本的小 app 功能很简单:

1、创建一个任务、编辑任务、完成任务

2、切换任务显示,全部显示、显示完成任务、显示进行中任务。

3、清除已完成任务、以及刷新操作(点击刷新,下拉刷新)清空任务记录

4、切换到一个界面来总体显示当前各种任务的数量

首先大家看一下项目配置文件 manyfest?


配置文件

找到 TasksActivity ?以及 对应的 layout?


TasksActivity&layout

可以清楚地看到,TasksActivity 所做的工作是 控制侧边菜单、menu,调度 fragments 。

首先看对 fragment 的调度。 采用 Framelayout 来作为 fragment 的容器,装填了首个显示的 fragment —— tasksFragment。(这些都是基本的操作)

下面貌似来了两个重要的家伙——TaskPresneter 、TaskViewModel

进去看一下

构造函数

首先看构造函数传入了一个 TasksRespository 和 一个 TasksContract.View?

由 MVP 的理念大家不难猜到,当前项目 通过 TasksPresenter 将 TasksRespository 与 TasksContract.View 绑定到了一起,view 明显的就是 大家的 tasksfragment 了 。那这个 responsitory 是什么? 大家去看一下 tasksactivity 中 传入的子类是什么?

Injection
taskResponsitory

现在 大家梳理一下 出现的这几个类 ? Injection ?FakeTasksRemoteDataSource ? (命名可以看出是 假数据 ?上面的注释也说明了他的作用) ?TaskLocalDataSource (本地数据)

根据谷歌 给出的注释 ? Injection 是个为了写测试用例而形成的类

RemoteDataSource与 LocalDataSource 分别是操作任务的 远端以及本地的具体实现类。

具体实现了什么呢? 点进去看一下......

方法列表

可以看到 TasksLocalDataSource 这个类 提供了 对任务的操作方法 如:完成一个任务、进行一个任务等。都是一些耗时的具体实现。

至此,大家就明了了, ? ?通过 TasksPresenter ?大家将 TasksFragment (View)与 Respository 这个负责实行的类 绑定到了一起,而这个 Respository 的作用就是 获取 data,无论是 (远端还是本地的数据)。

这样就完成了 ?MVP 模式的 绑定链接。

结构


MVP 谷歌Sample—— todo APP(二)

推荐阅读更多精彩内容