我正在实现MVVM android应用程序与域层.它去标准的方式:
Activity -> ViewModel -> RISKCase(带注入的存储库)
我有一个架构问题,我想在这里问。我的应用程序 Package 有2个包“数据”,“域”(它有更多,但这2个是重要的问题)。
我看到人们在域和数据包中创建包结构“usecase”文件夹的例子。在这些情况下,域中的“usecase”包包含usecase的接口并用作抽象。另一方面,数据层中的“usecase”包用作此抽象的实现(这里的类通常有类似于ParticularCase CaseImpl的名称)。
当我更深入地思考它时,抽象用例并没有多大意义。有什么好处呢?你可以通过改变你注入其中的内容来改变用例,但它应该在操作符函数中几乎总是有相同的实现,不是吗?
如果我们直接在域层中实现用例(没有抽象),我们是否违反了任何CLEAN架构规则->(https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)
在这个链接中,我理解了域层(用例)应该只有抽象,而下一层(接口适配器)应该有它们的实现。
如果能完全理解这件事就好了,头上没有任何问号。如果能有一些解释得很好的答案就好了。谢谢!
1条答案
按热度按时间hkmswyz61#
如果你计划有两个或多个相同抽象的不同实现,你可能只应该创建一个接口。
来自“表示”层的类(例如,ViewModel)可以依赖于来自“表示”、“域”或“数据”层的类。
来自“域”层的类(例如,CSCase)只能依赖于来自“域”或“数据”层的类。
来自“数据”层的类(例如Repository)只能依赖于来自“数据”层的类。
也就是说,您不应该在来自“数据”层的类中导入来自“域”层的类。
你可以在这里阅读:https://developer.android.com/topic/architecture/domain-layer