谷歌官方MVP Demo解读

谷歌官方MVP Demo解读

项目结构与目录结构

可以看到谷歌是按照模块分包的,其在tasks为首页的包,下面解读其工作流程。

谷歌的MVP项目中亮点在于:

  • 加入了契约类 Contract来统一管理某个模块中的presenter接口和view接口。
  • 将Fragment作为view,Activity作为P和V的创建者,并将两者联系起来。

基类与契约类–TasksContract

契约类中会同时声明模块中V和P层的接口并定义好行为,这样的好处在于我们可以一目了然的看到模块中的各个功能。

View层–TasksFragment

TasksFragment实现了TasksContract.View接口,在界面可见的时候(OnResume)的时候调用P层的start()方法加载数据。

Presenter层–TasksPresenter

可以看到在TasksPresenter的构造函数中,会传入两个参数

(@NonNull TasksRepository tasksRepository, @NonNull TasksContract.View tasksView)

其中:tasksRepository就是Model层对象,tasksView就是View层对象。并且会调用方法

 mTasksView.setPresenter(this);

将自身传递给View层,这样View就拿到了Presenter的引用。此时也就形成了下面的通信方式:

TasksActivity

TasksActivity并没有实现TasksContract.View接口,而是负责创建TasksFragment(View)和TasksPresenter(Presenter)从而将两者联系起来。

Model层–TasksRepository

Model层会判断获取本地缓存的数据或者是获取远程的数据,这个逻辑是由Model完成的,并通过回调接口回传数据到Presenter。而Presenter只负责什么时候去获取数据就行,而不关心数据的来源。

presenter请求数据

Model获取具体的数据并回传

回调接口

本文地址:http://blog.csdn.net/ProdigalWang/article/details/75119384

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值