todo-mvp

作者: 红酥手黄藤酒丶 | 来源:发表于2018-12-19 23:36 被阅读0次

    todo-mvp

    当前版本的app叫做 todo-mvp,为该 github 项目中的其他示例提供了一个基础。样本旨在:

    • 在不适应任何框架的情况下,提供一个基础的 Model-View-Presenter(MVP)架构
    • 作为比较和对比该 github 项目中其他示例的参考

    提示: 这个 github 项目中所有的分支均使用下面的命名约定,来区分 View类 和 MVP 中的 视图层

    • Android View 指的是 android.view.View
    • 接受 MVP 中的 presenter 发出的命令的 view 就是 视图层

    你需要做什么

    在开始学习这个示例之前,先熟悉下面的条目可能会对你有些帮助:

    这个 todo-mvp 示例使用下面的依赖:

    设计应用程序

    所有的 Android App都会包含与 simple to-do 同样的常用功能,这个 app 由下面四个 UI 组成:

    • Tasks:用来管理一个 tasks 列表
    • TaskDetail:用来查看或删除 task
    • AddEditTask:用来创建或编辑 task
    • StatisTics:展示与 tasks 相关的统计信息

    在此版本的应用程序,以及基于它的其他版本中,每个 UI 都使用以下的类和接口实现:

    • 一个定义了 viewpresenter 之间的连接的 contract
    • 一个用于创建 fragmentspresenterActivity
    • 一个实现了 view 接口的 Fragment
    • 在相应的 contract 中实现 presenter 接口的 presenter

    presenter 通常托管于特定功能相关联的业务逻辑,而与其绑定的 view 去掌控 Android UI 的工作。view 几乎不含有逻辑过程,它根据 presenter 的命令操作 UI,监听用户的行为动作然后把这些行为动作传递给 presenter。

    实现应用程序

    每个版本的应用程序都使用不同的实现方式来实现相同的功能,以此来展示不同的架构之间的区别。例如,此版本使用以下方法来解决常见的实现问题:

    • 此例使用 product flavor 在编译其替换 modules,为手动或自动测试提供假数据
    • 此版本使用回调来处理异步任务
    • 使用 Room 将数据存储在本地 SQLite 数据库中

    注意下图,此版本的应用程序使用 fragment,这有两个原因:

    • 使用 activitiesfragments 可以更好的解耦、从而更好的实现 MVP。在这个应用程序版本中,Activity 是总控制器,用来创建和连接 views 与 presenters。
    • 使用 fragments 支持具有多个视图的平板电脑或UI视图
    image

    此版本的app包含了一些涉及到 presenters、repositories、和 data source 的单元测试。此例也包含 UI 测试(依靠假数据),并通过依赖注入来提供虚假模块。了解更多使用依赖注入的快速测试,查看 Leveraging product flavors in Android Studio for hermetic testing

    关于程序的维护

    此例中包含了 类 和 接口,如 presenters 和 contracts,这就使得代码量相较于传统的(不使用架构的)项目有了一定的增长。

    下表总结了用于实现此版本应用程序的代码量。您可以将其用作与此项目中每个其他样本提供的类似表进行比较的基础。

    Language Number of files Blank lines Comment lines Lines of code
    Java 51 1216 1685 3901
    XML 34 97 338 608
    Total 85 1313 2023 4509

    相关文章

      网友评论

        本文标题:todo-mvp

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