todo-MVP
该版本的应用程序称为todo-mvp,并为此项目中的其他示例提供了基础。该样本旨在:
- 提供基本的Model-View-Presenter(MVP)架构,而不使用任何架构框架。
- 作为比较和对比本项目其他样本的参考点
** 注意 **:该项目在所有存储库分支中使用以下命名约定,以区分View类和MVP视图:
- “Android View”是指android.view.View类。
- 从MVP中的演示者接收命令的视图被称为“视图”。
你需要知道的
在浏览此示例之前,您可能会发现熟悉以下主题很有用:
- 项目project README
- The MVP architecture
todo-mvp示例使用以下依赖关系:
- Common Android support libraries --- com.android.support。*命名空间中的软件包提供向后兼容性和其他功能。
- Android Testing Support Library - 用于支持UI测试的框架,使用Espresso和AndroidJUnitRunner。
-
Mockito 用于实施单元测试的框架。
*Guava - 一组Google的Java核心库,通常用于Android应用程序。
设计应用
所有版本的Android蓝图应用程序都包含与简单易用型应用程序相同的常见功能。该应用程序由四个UI screen 组成:
- Tasks 用于管理任务列表。
- TaskDetail 用于读取或删除任务
- AddEditTask - 用于创建或编辑任务。
- Statistics - 相关任务的统计数据。
在这个版本的应用程序中,以及基于它的其他版本,每个屏幕都是使用以下类和接口实现的:
演示者通常承载与特定功能相关联的业务逻辑,相应的视图处理Android UI工作。这个观点几乎没有任何逻辑;它将演示者的命令转换为UI动作,并监听用户操作,然后传递给演示者。
实现应用程序
每个版本的应用程序使用不同的方法实现相同的功能来展示和对比各种架构设计。例如,该版本采用以下方法来解决常见的实现问题:
- 此示例使用产品风格(product flavors)在编译时替换模块,为手动和自动测试提供假数据。
- 此版本使用回调来处理异步任务。
另请注意,这个版本的应用程序使用片段,这有两个原因:
- 使用这两种活动和片段,可以更好地分离出对MVP实现的担忧。在此版本的应用程序中,活动是创建和连接视图和演示者的整体控制器
- 片段的使用支持多个视图的平板电脑布局或UI屏幕。
该版本的应用程序包括一些包含演示者,存储库和数据源的单元测试。该示例还包括依赖于假数据的UI测试,并通过依赖注入来提供假模块。有关使用依赖注入来进行有关测试的更多信息,请参阅Leveraging product flavors in Android Studio for hermetic testing
维护应用程序
该示例包括与不使用特定架构的更传统项目相比较的类和接口(如演示者和合同),可增加代码行数。
下表总结了用于实现此版本应用程序的代码量。您可以将其作为与本项目中每个其他示例提供的类似表进行比较的基础。
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 |