MVVM 干净架构中是否真的需要 Data Mapper 层?
Does the Data Mapper layer is really required in MVVM clean architecture?
我在一些代码库中看到他们使用带有 usecase 和 repo 层的映射器层。我们可以在用例层中拥有映射器逻辑吗?或者我们需要该层有什么具体原因吗?
是的,您可以,但使用映射器通常是个好主意。映射器不是 MVVM 特定的,使用 映射器模式 的原因是隔离逻辑,以便在必要时更容易测试和重用其他 类 中的转换逻辑。
这是设计架构时的一种权衡。
原则上,应用程序架构是按逻辑组进行代码分解的过程。逻辑将组定义为具有相同抽象级别的相关实体。所以在应用中,逻辑组是视图层、业务use-case层、数据管理层。如果您想将这些层分解为它们的逻辑 sub-components ,这是可能的,但它会降低代码的可读性并可能减慢开发速度。另一方面,它使您能够测试 sub-components。因此,这确实是您在设计架构时必须权衡的问题。
mapper是进一步分解domain层的例子,coordinator是进一步分解view层的例子。
我在一些代码库中看到他们使用带有 usecase 和 repo 层的映射器层。我们可以在用例层中拥有映射器逻辑吗?或者我们需要该层有什么具体原因吗?
是的,您可以,但使用映射器通常是个好主意。映射器不是 MVVM 特定的,使用 映射器模式 的原因是隔离逻辑,以便在必要时更容易测试和重用其他 类 中的转换逻辑。
这是设计架构时的一种权衡。 原则上,应用程序架构是按逻辑组进行代码分解的过程。逻辑将组定义为具有相同抽象级别的相关实体。所以在应用中,逻辑组是视图层、业务use-case层、数据管理层。如果您想将这些层分解为它们的逻辑 sub-components ,这是可能的,但它会降低代码的可读性并可能减慢开发速度。另一方面,它使您能够测试 sub-components。因此,这确实是您在设计架构时必须权衡的问题。 mapper是进一步分解domain层的例子,coordinator是进一步分解view层的例子。