GoogleSamples MVP 中文文档 README

作者: Android那些事儿 | 来源:发表于2017-11-10 14:37 被阅读62次

todo-mvp

这个版本的应用叫做todo-mvp , 并为项目中的其他实例提供依据。这个实例旨在:

  • 在不使用任何其他框架的前提下,提供一个基本的Model-View-Presenter (MVP)架构。
  • 作为与本项目中其他项目比较、对照的参考依据。

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

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

准备工作

在浏览本示例之前,熟悉以下示例会对你很有帮助:

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,有如下两个原因:

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

这个版本的应用程序包含一系列的单元测试,包括: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库

相关文章

网友评论

    本文标题:GoogleSamples MVP 中文文档 README

    本文链接:https://www.haomeiwen.com/subject/taubmxtx.html