Android多模块架构:领域取决于数据,反之亦然

use*_*013 5 architecture android clean-architecture android-architecture android-multi-module

一些Android多模块架构示例表明领域层依赖于数据。其他人则相反。

\n

Android 开发者网站说:

\n
\n

领域层是位于 UI 层和数据层之间的可选层。

\n
\n

它还显示了域依赖于数据的图片:\n域取决于数据

\n

与此同时,proandroiddev.com 上的另一篇文章说:

\n

1.

\n
\n

域层\xc2\xa0是洋葱的最内部部分(与其他层没有依赖关系),它包含\xc2\xa0实体、用例和存储库接口。\xc2\xa0用例组合来自1个或多个存储库接口的数据。

\n
\n
    \n
  1. \n
\n
\n

最常见的错误之一是让您的应用程序由数据层/特定数据系统驱动。

\n
\n
    \n
  1. \n
\n
\n

域层不依赖于数据层。

\n
\n

并显示适当的图像:\n在此输入图像描述

\n

那么您能否描述一下哪种方法更适合 Android 多模块?为什么?

\n

Ash*_*hok 4

如果考虑到这两个文档对于您想要实现的目标的正确上下文都是正确的。

如果您想实现一个仅针对 Android 的解决方案,Android 开发人员的文档更适合它。如果你想创建一个可以针对多个平台(Android、iOS、桌面)的项目,ProAndroidDev 的架构更适合。

另外,在阅读他们的文档时,我希望您牢记他们的最终目标和背景。

在 Android 开发人员的文档中,数据层由实体和存储库类组成。这些类在用例类中是必需的,因此域层对数据层有依赖性。在此架构中,假设您仅为 Android 构建应用程序,因此无需为存储库类创建抽象,因为这会增加复杂性。

在 ProAndroid 开发人员的文档中,假设您现在可能正在为 Android 构建应用程序,稍后您可能会引入其他平台,或者您现在只针对多个平台。在这种情况下,存储库类抽象变得更加重要,因为通过在早期阶段添加它,您可以减少未来的错误/重构。在本文档中,为了实现上述目的,域层现在包含 Usecase、Entity 和 Repository 接口类,而不是数据层,而数据层包含 Repository Impl 类。因此,域层不需要任何依赖,因此它不应该对其他层有任何依赖。

我认为在 ProAndroid 开发者的博客中,如果他们将包含存储库的层称为存储库层而不是数据层,那么可以避免这种混乱。在 Android 的博客中,他们将其称为数据层,因为它包含实际的数据/POJO 类和存储库类(负责管理此数据的类)。