0

我正在研究 android 中的 MVP 架构实现。我发现在android studio中实现它的方法太多(提到问题的结尾),但我仍然很困惑。

有人可以帮我找到以下问题的正确答案。

  • MVP 中应用程序的目录结构是什么?
  • Activity 应该是 Presenter 还是 View?

方式一

方式二

4

4 回答 4

3

MVP 中应用程序的目录结构是什么?

  • 没有预定义的结构。是什么使您的代码可读或遵循什么结构,您也可以将其用于 MVP。

Activity 应该是 Presenter 还是 View?

  • View 是 UI 层,它显示数据并通知 Presenter 用户操作。所以 Activity 将永远是一个视图。

如果你正在寻找 MVP 实现的好例子,Android 自己开发了一个MVP 的GitHub Repo。你应该调查一下。

在哪里

todo-mvp

  • 演示基本的 Model-View-Presenter (MVP) 架构,并提供构建其他示例的基础。该样本还可以作为比较和对比本项目中其他样本的参考点。

todo-mvp-clean

  • 使用来自 Clean Architecture 的概念。

todo-mvp-匕首

  • 使用 Dagger 2 添加对依赖注入的支持。

todo-mvp-rxjava

  • 使用 RxJava 2 实现并发,并抽象数据层。

todo-mvvm-数据绑定

  • 基于 todo-databinding 示例,此版本包含 Model‑View‑ViewModel 模式。

todo-mvvm-live

  • 使用来自架构组件的 ViewModel 和 LiveData 以及具有 MVVM 架构的数据绑定库。
于 2017-12-19T10:25:08.823 回答
1

尽管 MVP 架构有很多实现,但它们都共享一个基本思想(或者至少应该这样做),即将业务逻辑与视图(活动、片段、对话框)分离。这是为什么?嗯,主要有两个原因:

  1. 关注点分离
  2. 可测试性:如果不涉及 android 组件,您的业务逻辑就可以被测试。

关于您的问题:

MVP 中应用程序的目录结构是什么?

除了应该识别您的 MVP 组件外,没有任何规则。在这里,您有一篇文章,我从包结构开始,但后来发现其他更方便。

Activity 应该是 Presenter 还是 View?

您的活动(或片段或任何负责显示视图组件的组件)应该是实现您的视图的活动。

我的建议是,您应该检查多个示例并查看每个示例的优缺点,并尝试从您会感觉更舒服的架构中定义自己的架构。

于 2017-12-19T10:40:53.673 回答
1

您可以使用ActivityFragment用于视图层。这是因为在 android 中显示 UI 元素需要Context

对于Presenter层,您必须确保不要通过构造函数或 setter将 传递ContextPresenter 。如果您需要ContextPresenter中执行除显示 UI 之外的任务,例如写入SharedPreferences,您可以从您的View中获取它(或者是ActivityFragment)。这样,如果View被销毁或变为null,Presenter 中就不会出现独立null Context的情况导致泄漏问题。

如果您想了解更多关于 MVP 结构的信息,我已经为 android 编写了一个非常方便的MVP 库,并在此处的示例应用程序中解释了它的使用。

于 2018-04-18T13:27:37.630 回答
0

MVP android 示例应用程序 MVP Android 示例用于解释如何在我们的 Android 应用程序中使用此模式。

于 2017-12-21T14:58:35.133 回答