【问题标题】:MVP Pattern for Android(DI - Interfaces)Android 的 MVP 模式(DI - 接口)
【发布时间】:2017-04-24 12:10:00
【问题描述】:

谁能告诉我使用依赖注入(例如 Dagger2)将视图(活动)与其演示者分离或使用视图(活动)实现的接口与演示者分离有什么区别?

我很困惑..当我尝试对演示者进行单元测试时,两种方法都应该有效。但是,当简单的接口就足够时,为什么还要使用像 dagger 这样的工具呢? 希望smbdy。能够帮助。谢谢

【问题讨论】:

  • 我发现这个问题有点不清楚,因为它目前的措辞。你能提供一个最小的代码示例来说明你的意思吗?
  • 什么不清楚?例如,我可以使用视图实现和演示者实例化的接口将视图中的引用传递给演示者。所以我将在 to 类之间有一个弱耦合。接口的实现对演示者来说并不重要,这意味着我可以使用任何 MockView。使用 Dagger2 将得到相同的结果,但它会将视图对象注入到演示者中。在测试方面更容易使用接口。使用匕首有什么好处?界面可以更轻松地解决问题...
  • 如果你问 MVP 有和没有 Dagger 2 的区别,除了 Presenter 中的依赖关系管理得更好之外没有区别。对于对象图非常小的演示者来说,它根本不会产生太大影响
  • 好的,谢谢克里斯蒂安的澄清。我希望最初的评论没有被认为是粗鲁的——我只是不明白这个问题。 Dagger 2 的 MVP 非常“流行”,因为有很多关于它的 Medium 文章,但是如果你想编写一个 MVP 应用程序,你当然不必使用 Dagger 2。其他好处只是使用依赖注入框架的一般好处,如this question的答案中的@
  • 但是,如果我尝试测试视图,如果我想使用 Mockpresenter,我需要更改注入的演示者,不是吗?在使用界面方面,我只是用新的 Mockpresenter 或我想要的任何演示者来实例化界面。我不明白为什么在 android 中测试 mvp 应用程序方面使用 Dagger 会更好。

标签: android dependency-injection interface mvp dagger-2


【解决方案1】:

使用界面和匕首都没有任何干扰。 Dagger 仅用于 DI(依赖注入),用于在 MVP 中提供不同的层需求。

必须始终使用视图接口,因为 MVP 必须这样做,并且视图通过实现接口与演示者分离。

您使用 Dagger 从特定层向另一层提供东西。你可以完全把 Dagger 放在一边,在你的视图层中创建一个帮助类,它实现了一些帮助接口,并通过整个代码的构造将它发送给演示者,但这有点混乱,这就是他们使用 Dagger 的原因。

看看我使用 Dagger 的示例项目: https://gitlab.com/amirziarati/Echarge

【讨论】:

    猜你喜欢
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    相关资源
    最近更新 更多