【问题标题】: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 之间的区别。这些东西有什么总结吗?谢谢。

【问题讨论】:

    标签: android mvvm 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),但您可以使用任何其他模式,例如 MVCMVP

    【讨论】:

    • 那你如何连接 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
    ______________________________________________
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 2013-05-24
      相关资源
      最近更新 更多