Android 应用程序中带有用例的领域层

问题描述 投票:0回答:1

我正在使用域层实现 MVVM android 应用程序。它以标准方式进行:

Activity -> ViewModel -> UseCase(带有注入的存储库)

我想在这里问一个架构问题。我的应用程序包装有 2 个包“数据”、“域”(它还有更多,但这两个对于这个问题很重要)。

我看到了人们在域和数据包中的包结构“usecase”文件夹中创建的示例。在这些情况下,域中的“usecase”包包含用例的接口并充当抽象。另一方面,数据层中的“usecase”包充当此抽象的实现(这里的类通常具有类似 PspecialUseCaseImpl 的名称)。

当我深入思考时,对用例进行抽象并没有多大意义。有什么好处?您可以通过更改在其中注入的内容来更改用例,但它在运算符函数中几乎总是应该具有相同的实现,不是吗?

看起来有点矫枉过正。如果我们直接在领域层中进行 useCase 实现(没有抽象),我们是否会违反任何 CLEAN 架构规则 -> (https://blog.cleancoder.com/uncle-bob/2012/08/13/the- clean-architecture.html

在此链接中,我了解到域层(用例)应该只有抽象,而下一层(接口适配器)应该有它们的实现。

如果能完全理解这件事就好了,头上没有任何问号。希望得到一些解释清楚的答案。谢谢!

android kotlin mvvm architecture use-case
1个回答
0
投票

如果您计划对同一抽象有两个或多个不同的实现,则可能应该只创建一个接口。

“表示”层(例如 ViewModel)中的类可以依赖于“表示”、“域”或“数据”层中的类。

“域”层中的类(例如,UseCase)只能依赖于“域”或“数据”层中的类。

“数据”层(例如,Repository)中的类只能依赖于“数据”层中的类。

也就是说,您不应该从“数据”层的类中导入来自“域”层的类。

您可以在这里阅读: https://developer.android.com/topic/architecture/domain-layer

© www.soinside.com 2019 - 2024. All rights reserved.