【问题标题】:Does the Data Mapper layer is really required in MVVM clean architecture?MVVM 清洁架构中是否真的需要 Data Mapper 层?
【发布时间】:2022-07-30 15:24:58
【问题描述】:

我在一些代码库中看到他们将映射器层与用例和回购层一起使用。我们可以在用例层中拥有映射器逻辑,对吗?或者有什么特别的原因为什么我们需要那个层?

【问题讨论】:

  • 映射器通常用作域实体和数据传输实体之间的适配器。这可确保您的代码库对网络实体的依赖关系不会非常紧密,以至于如果 API 响应在未来发生变化,应用程序可能会中断。

标签: android mvvm clean-architecture


【解决方案1】:

是的,您可以,但使用映射器通常是个好主意。 Mapper 不是 MVVM 特定的,使用 ma​​pper 模式 的原因是为了隔离逻辑,以便在必要时更容易测试和重用其他类中的转换逻辑。

【讨论】:

    【解决方案2】:

    在您设计架构时,这是一种权衡。 原则上,应用程序架构是逻辑组的代码分解过程。逻辑将组定义为具有相同抽象级别的相关实体。所以在应用程序中,逻辑组是视图层、业务用例层、数据管理层。如果您想将这些层分解为它们的逻辑子组件,这是可能的,但它会降低代码的可读性并可能会减慢开发速度。另一方面,它使您能够测试子组件。因此,在设计架构时,这确实是您必须处理的权衡。 mapper 是进一步分解领域层的例子,coordinator 是进一步分解视图层的例子。

    【讨论】:

      【解决方案3】:

      Mapper Pattern 不受CA 的强约束,该机制用于将框架模型与领域模型分开。一般来说,当我们谈论 Mapper 时,我们通常会提到 Clean Architecture,为什么会这样?
      CA 基本上是一个“分层架构”,它使架构不同层的依赖关系失去耦合。当我们进行网络调用或数据库调用时,我们使用属于框架层的模型,但是当我们将数据从框架传递到域或用例或表示层时,我们要做什么?破坏架构?使用相同的数据模型?不,我们将使用映射器机制将框架模型映射到域模型以保持分离以及(我应该在前面提到过)单元测试。
      那么我们可以将 Mapper 模式与 MVVM、MVP 或任何其他表示层架构一起使用吗?是的,您可以。
      您可以制作 ViewModels、Presenters/Views 使用的模型,并将框架模型与 Networks(DTO) 或 DB(Entities) 一起使用,并在存储库中使用映射器模式。

      【讨论】:

        猜你喜欢
        • 2021-12-23
        • 2021-07-23
        • 2019-05-30
        • 1970-01-01
        • 2022-10-14
        • 2014-06-22
        • 2021-06-17
        • 2021-02-12
        • 1970-01-01
        相关资源
        最近更新 更多