Google TODO-MVP-Loaders 简要分析

本文简要分析了Google的TODO-MVP-Loaders架构,介绍了MVP模式的组成部分以及Loaders在数据处理中的作用。通过Tasks模块的详细解析,展示了数据源的本地和远程存储,以及TasksRepository、TasksPresenter和Loader的工作流程,帮助读者理解如何在Android项目中应用MVP模式和Loader管理数据。
摘要由CSDN通过智能技术生成

Google TODO-MVP-Loaders 简要分析

之前写的项目都是采用 MVC 模式(Model - View - Controller),虽然极力避免V层中出现逻辑处理,可整体还是凌乱一些。之前也看 鸿洋大神 浅谈 MVP in Android的文章,但是在项目中却没用实际应用过。刚好这几天不忙,就看了下 Google 官方的 TODO-MVP-Loaders ,并仿照其更改了自己的项目。

  • MVP 模式
    M: Model - 业务逻辑和实体模型;
    V: View - 对应于ActivityFragment,负责UI 绘制及用户交互;
    P: Presenter - 负责 MV 的交互。
    看下Google 官方图示

MVP 图示

从中可以看出,Sample 采用了观察者模式,Fragment 作为 View 层,而 Activity 负责 ViewPresenter 的创建并将二者关联起来,Repository 可以看作为 M 层,Loader 我理解为是M 层的助手,在 Loader 中注册 Repository 并监听数据源变化。

  • TODO-MVP-Loaders Sample 架构

这里写图片描述

Sample 中主要有四个模块:
Tasks - 任务列表;
Addedittask - 新建任务;
Taskdetail - 任务编辑;
Statistics - 统计。

所有模块 Presenter 的基类

public interface BasePresenter
{
  void start();
}

View 的基类

public interface BaseView<T>
{

  void setPresenter(T presenter);

}

这里主要 分析 Tasks 模块,其余模块思想都是类似的。

  • Tasks

从上图的图示中,我们可以看到在 data 包下有数据源 source 及实体类 task,而 source 中有 localremote 两个子包,从包名上就可以猜出一个是本地存储一个是网络存储,分别打开后我们可以看到,分别对应有TasksLocalDataSourceTasksRemoteDataSource 类,并且都实现了 TasksDataSource 接口,而该接口中主要定义了对任务数据的所有操作,如

@Nullable
List<Task> getTasks();

@Nullable
Task getTask(@NonNull String taskId);

void saveTask(@NonNull Task task);
...

TasksRemoteDataSource 模拟网络数据操作,TasksLocalDataSource 采用SQLite数据库存储数据。由 MVP 模型定义我们可以知道,数据的逻辑处理是在 M 层中完成的,那么我们看下 M 都干了些什么活。

  • TasksRepository
    之前有说过,TasksRepository 作为 M
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值