Android中具有干净架构的mvvm和没有干净架构的mvvm有啥区别?
Posted
技术标签:
【中文标题】Android中具有干净架构的mvvm和没有干净架构的mvvm有啥区别?【英文标题】:What is difference between mvvm with clean architecture and mvvm without clean architecture in Android?Android中具有干净架构的mvvm和没有干净架构的mvvm有什么区别? 【发布时间】:2020-02-17 10:44:36 【问题描述】:我正在学习 MVVM 和 Clean Architecture。然后我发现了一些关于 MVVM + Clean Architecture 的文章,但我仍然没有了解 mvvm with clean architecture 和 mvvm without clean architecture 之间的区别。这些东西有什么总结吗?谢谢。
【问题讨论】:
【参考方案1】:干净的架构旨在分离各层。业务层、数据层和表示层将是独立的应用程序。因此,您将增加它们中的每一个的可重用性。 MVVM 作为设计模式应该在表示层中实现。表示层将与业务层(或领域层)交互,业务层将使用数据层来共享数据。
【讨论】:
那你如何连接 use sasese 和 mvvm layer 呢? mvvm 中的 "model" 与 "CA" 一起使用时代表什么【参考方案2】:MVVM 只是presentation layer
中干净架构的一部分。它只是一组关于如何从 UseCase 显示数据的规则。
使用干净架构的好处之一是我们可以更改presentation layer
中的设计模式,而无需更改domain layer
或用例。
因此,例如,如果我们使用 let say MVI,然后更改为 MVVM,则可以轻松顺利地完成.. :)
【讨论】:
那你如何连接 use sasese 和 mvvm layer 呢? mvvm 中的 "model" 与 "CA" 一起使用时代表什么 @IronHide 我们可以通过简单地将 useCase 与 MVVM 层连接到 ViewModel 中。 MVVM(表示层)中的模型是用例的输出。当然,viewModel 代码中的实现取决于你如何返回 useCase 的输出。 好的有趣的想法,我在考虑使用用例代替模型,对我来说,用例不仅仅是单个动作,它是一系列动作(步骤)可能需要调用它的方法,所以对我来说,该模型是从一开始就使用的,而不是作为最终结果。 我猜你的意思是模型是简单的 DTO 用于用例交互而不是像纯 mvvm 模式那样建模?可惜 bob 叔叔在他的例子中没有使用 mvvm 如果 DTO 对你来说不够用,那么你可以在 viewModel 中将 DTO 模型转换为 UI 模型。而且我同意 UseCase 不应该对 UI 中的模型(MVVM)一无所知,因为 UseCase 只是给出了一个流程的输出。如果 useCase 没有输出,至少在处理完成时返回 void。【参考方案3】:MVVM 只是一种管理您正在使用的任何架构的视图层的技术。
简洁架构是一种组织层间通信的方式。它们不是相互排斥的
具有干净架构的 MVVM 层 代码分为三个独立的层:
表示层 域层 数据层表示层 在这里,与视图和动画相关的逻辑发生在这里。它使用 Model-View-ViewModel (MVVM),但您可以使用任何其他模式,例如 MVC 或 MVP
【讨论】:
那你如何连接 use sasese 和 mvvm layer 呢? mvvm 中的“model”与“CA”一起使用时代表什么?【参考方案4】:据我了解:
没有干净架构的 MVVM:
______________________________________________
UI
- - - - - - - - - - - - - - - - - - - - - - -
Presenter/ViewModel (Business Logic)
______________________________________________
Repository
DataSource
______________________________________________
具有简洁架构的 MVVM:
______________________________________________
UI
Presentation Layer
Presenter/ViewModel
______________________________________________
UseCases + Entity (Business Logic) Domain/Business Layer
______________________________________________
Repository
Data Layer
DataSource
______________________________________________
【讨论】:
以上是关于Android中具有干净架构的mvvm和没有干净架构的mvvm有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章