【问题标题】: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 的文章后,我得出一个结论,即我不能在 domain 或 data 模块中使用任何与 android framework 相关的依赖项。否则将违反SOLID的依赖倒置原则。
依赖倒置原则
高层模块不应该依赖低层模块,两者都应该依赖抽象。
英文 -> 您不能从数据或领域层直接访问与框架相关的组件,如数据库、gps、改造等。他们不应该关心那些东西。它们应该完全独立于 android 相关组件。我们可以使用接口来满足抽象的规则。
因此,我的data module 和domain module 只包含语言依赖项。无论我想要什么与android-framework相关的数据,我都通过实现interfaces来获取它。