我正在研究 android 中的 MVP 架构实现。我发现在android studio中实现它的方法太多(提到问题的结尾),但我仍然很困惑。
有人可以帮我找到以下问题的正确答案。
- MVP 中应用程序的目录结构是什么?
- Activity 应该是 Presenter 还是 View?
我正在研究 android 中的 MVP 架构实现。我发现在android studio中实现它的方法太多(提到问题的结尾),但我仍然很困惑。
有人可以帮我找到以下问题的正确答案。
MVP 中应用程序的目录结构是什么?
Activity 应该是 Presenter 还是 View?
如果你正在寻找 MVP 实现的好例子,Android 自己开发了一个MVP 的GitHub Repo。你应该调查一下。
在哪里
尽管 MVP 架构有很多实现,但它们都共享一个基本思想(或者至少应该这样做),即将业务逻辑与视图(活动、片段、对话框)分离。这是为什么?嗯,主要有两个原因:
关于您的问题:
MVP 中应用程序的目录结构是什么?
除了应该识别您的 MVP 组件外,没有任何规则。在这里,您有一篇文章,我从包结构开始,但后来发现其他更方便。
Activity 应该是 Presenter 还是 View?
您的活动(或片段或任何负责显示视图组件的组件)应该是实现您的视图的活动。
我的建议是,您应该检查多个示例并查看每个示例的优缺点,并尝试从您会感觉更舒服的架构中定义自己的架构。
您可以使用Activity
或Fragment
用于视图层。这是因为在 android 中显示 UI 元素需要Context
。
对于Presenter层,您必须确保不要通过构造函数或 setter将 传递Context
给Presenter 。如果您需要Context
在Presenter中执行除显示 UI 之外的任务,例如写入SharedPreferences
,您可以从您的View中获取它(或者是Activity
或Fragment
)。这样,如果View被销毁或变为null
,Presenter 中就不会出现独立null
Context
的情况导致泄漏问题。
如果您想了解更多关于 MVP 结构的信息,我已经为 android 编写了一个非常方便的MVP 库,并在此处的示例应用程序中解释了它的使用。
MVP android 示例应用程序 MVP Android 示例用于解释如何在我们的 Android 应用程序中使用此模式。