Android进修之路

Android MVP 学习笔记

2016-04-30  本文已影响139人  于晓飞93

直接看README.md和源码(todo-mvp分支)。根据tasks界面的功能画了一张类图,并根据模块进行划分。

MVP.png

Model层。所有对外方法都写在TasksDataSource接口中。TasksRepository, TasksRemoteDataSource, TasksLocalDataSource实现了接口,并且只保持一个对象。TasksRemoteDataSource对象负责服务端数据请求,'TasksLocalDataSource'对象负责本地数据管理,TasksDataSource对象负责调度内存缓存,本地请求,网络请求的优先级,处理请求策略。它是包外唯一可以被访问到的对象。

Presenter层。连接了Model层和View层。TasksPresenter对象持有一个View对象和TasksRepository的实例,它负责处理界面与数据交互的逻辑。在这一层中有一个TasksContract类帮助大家理解,它包含了两个接口类------TasksContract.ViewTasksContract.PresenterTasksContract.View接口由具体的View类来实现,它包括了数据请求过程中的回调方法;TasksContract.Presenter接口由TasksPresenter类来实现,它负责View交互过程中的数据操作逻辑。

View层。TasksFragment对象持有一个TasksPresenter对象。它只负责界面相关的逻辑,所有与数据相关的逻辑都交给TasksPresenter对象去实现。

TasksActivity是整个页面的入口,它负责创建TasksFragment对象(View)和TasksPresenter对象(Presenter),并把他们联系在一起。它实时上充当一个控制者的角色。

![逻辑架构][2]

总结:

mvp-clean-domain

Domain部分主要作用是:

整个框架没有引入第三方代码库,增加的代码量不算多。如果只做简单的网络请求,已经基本够用了。

现在整个架构是这样子的了。
![mvp-clean-structure][3]
[1]:https://github.com/android-cn/blog/tree/master/java/dependency-injection
[2]:https://github.com/googlesamples/android-architecture/wiki/images/mvp.png
[3]:https://github.com/googlesamples/android-architecture/wiki/images/mvp-clean.png

上一篇 下一篇

猜你喜欢

热点阅读