GoogleSamples MVP 中文文档 README

todo-mvp

这个版本的应用叫做todo-mvp , 并为项目中的其他实例提供依据。这个实例旨在:
* 在不使用任何其他框架的前提下,提供一个基本的Model-View-Presenter (MVP)架构。
* 作为与本项目中其他项目比较、对照的参考依据。

备注: 本项目中所有分支代码库,使用如下命名惯例,来区分View 对象以及MVP 视图。

  • “Android View” 是指:android.view.View包下面的类实现。
  • 从MVP中的presenter中接收指令的view,被称为 “view”。

准备工作

在浏览本示例之前,熟悉以下示例会对你很有帮助:
* project README
* MVP 架构

todo-mvp 示例 使用了如下的依赖项:
* Common Android support libraries - 在com.android.support.* 命名空间下的包提供向下兼容以及其他功能特性。
* Android Testing Support Library - 用于支持UI测试的框架,同时使用:Espresso和AndroidJUnitRunner。
* Mockito - 一个模拟框架,用于实现单元测试。
* Guava - 一套Google常用的Java核心库,常用在Android应用程序中。

应用程序设计

每一个版本的Android Blueprints应用程序都包含一个常见的代办事项功能。应用程序有如下四个UI界面组成:
* Tasks - 用于管理任务结合。
* TaskDetail - 用于读取任务详情。
* AddEditTask - 用于添加或者编译任务。
* Statistics - 展示任务相关的统计。

在这个版本的应用程序中,以及基于它的其他版本,每一个界面都是使用如下类和接口来实现的:

  • 契约(Contract)类。定义了view和presenter之间的连接。
  • Activity 。在该页面,创建了Fragments以及Presenters。
  • Fragment。该实例实现了view 的接口。
  • presenter。实现了相应契约(Contract)类中presenter接口。

presenter通常托管特定功能的业务逻辑,同时相应的view用来处理 Android UI 线程工作。view中几乎不含有任何逻辑;view会将presenter的指令转化为UI操作,并监听用户操作,然后将这些操作指令传递给presenter。

应用程序实现

应用程序的不同版本都使用不同的方法来实现相同的功能,以展示和对比各种不同的架构设计。例如:这个版本使用如下的方式解决常见的实现问题:

  • 示例,在编译时使用product flavors 来替换modules,为手动和自动测试提供模拟数据。
  • 这个版本使用回调来解决异步任务。

另外:在下面的插图中,这个版本的应用程序使用Fragment,有如下两个原因:

  • 同时使用activities 和 fragments 考量点在于这样能够更好的进行分离,补充了MVP的实现。在这个版本的应用程序中,Activity作为一个整体的连接器,创建、连接着views和presenters。
  • 使用framgments可以支持tablet布局以及多个views的UI屏幕。

GoogleSamples MVP 中文文档 README_第1张图片

这个版本的应用程序包含一系列的单元测试,包括:presenters、repositories还有data sources。示例同样包含基于模拟数据的UI测试,使用依赖注入来使用模拟模块。有关更多使用依赖注入来进行测试的信息,请参阅:Leveraging product flavors in Android Studio for hermetic testing.

应用程序维护

示例包含了类文件以及接口文件,例如:presenters和contracts,与不适用特定体系架构的传统项目相比,MVP这种方式增加代码行数。

下面的表格总结了使用当前版本架构的应用程序的代码量。你可以将其用作与本工程其他实例所提供的类似表格比较、对比的基础依据。

Language Number of files Blank lines Comment lines Lines of code
Java 46 1075 1451 3451
XML 34 97 337 601
Total 80 1172 1788 4052

备注

转到Github库

你可能感兴趣的:(Android,mvp,android,文档,框架)