需要澄清在 Clean Code + MVVM 中数据模块中库依赖项的使用 (Android)

Need Clarification on the Usage of library dependencies inside Data module in Clean Code + MVVM (Android)

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

我需要从数据模块中获得类似 AuthResult 的值。为此,我需要在数据模块的 Gradle 文件中添加 Firebase 依赖项。我认为这将违反 高层模块不应依赖于低层模块规则

谁能帮我解释一下?

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

Dependency Inversion 原则

依赖倒置原则

Higher level module should not be dependent on Lower level modules, and both should be dependent on abstraction.

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

因此,我的 data moduledomain module 仅包含语言依赖项。无论我想要什么 android-框架相关的数据,我都通过实现 interfaces.

来获取它