【问题标题】:Need Clarification on the Usage of library dependencies inside Data module in Clean Code + MVVM (Android)需要澄清 Clean Code + MVVM (Android) 中 Data 模块内库依赖项的使用
【发布时间】:2020-07-06 10:32:43
【问题描述】:

我对 android 中的 MVVM 架构模式非常熟悉。为了更进一步,我正在按照清洁代码原则 (SOLID) 进行我的下一个项目。我将整个应用程序分成三个模块。 1)应用程序(演示+框架)2)数据3)领域。我的疑问是我是否可以在 Data 模块中保留库依赖项(即 Firebase)。现在,我正在使用界面来访问与应用相关的内容,例如共享偏好、位置获取器、改造等。

我需要从 Data 模块中期待像 AuthResult 这样的值。为此,我需要在数据模块的 Gradle 文件中添加 Firebase 依赖项。我认为这会违反高层模块不应依赖低层模块规则

谁能帮我澄清一下?

【问题讨论】:

    标签: android kotlin mvvm solid-principles


    【解决方案1】:

    在阅读了几篇关于 MVVM + Clean Code 的文章后,我得出一个结论,即我不能在 domaindata 模块中使用任何与 android framework 相关的依赖项。否则将违反SOLID依赖倒置原则。

    依赖倒置原则

    高层模块不应该依赖低层模块,两者都应该依赖抽象。

    英文 -> 您不能从数据或领域层直接访问与框架相关的组件,如数据库、gps、改造等。他们不应该关心那些东西。它们应该完全独立于 android 相关组件。我们可以使用接口来满足抽象的规则。

    因此,我的data moduledomain module 只包含语言依赖项。无论我想要什么与android-framework相关的数据,我都通过实现interfaces来获取它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 2011-09-11
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      相关资源
      最近更新 更多