将数据模型映射到域模型的简单方法
Easy way for mapping data models to domain models
我遵循 Clean Architecture
模式,其中我们有 3 层(Presentation
、Domain
、Data
)。
每一层都应该有自己的模型,这些模型在使用映射器传递到另一层时应该进行转换。
我想知道是否有一种简单的方法(库?)将 data model
映射到 domain model
而无需创建 mapper
,特别是如果我的 [=14] =] 有很多字段(例如 40-50)。
编辑
我已经试过了ModelMapper and DozerMapper but apparently they don't work well on Android (ModelMapper issue and DozerMapper issue).
提前致谢。
正如 Adam Vincent 所说,在干净的架构中,领域模型是核心,除此之外,每一层都应该只在必要时定义自己的模型。
我的日常工作涉及多个使用干净架构的项目。我们通常发现自动映射工具没有提供太多价值。原因是,干净的架构从根本上就是消除从领域层到 implementation/intrastructural 层的依赖性。自动映射器工具倾向于支持有限的转换,甚至强制您的持久层模型(例如 DTO)一对一地匹配域类型。这往往会限制域和持久层模型根据其不同职责进行定制的能力。
特别是,域 类 通常包含一组与相应持久层 类 略有不同的字段。我们更喜欢使用不可变类、构造函数和手动实现的映射逻辑等模式(前者大大简化了后者的维护)。这确保了域和持久性模型之间的转换得到明确和仔细的考虑。
我遵循 Clean Architecture
模式,其中我们有 3 层(Presentation
、Domain
、Data
)。
每一层都应该有自己的模型,这些模型在使用映射器传递到另一层时应该进行转换。
我想知道是否有一种简单的方法(库?)将 data model
映射到 domain model
而无需创建 mapper
,特别是如果我的 [=14] =] 有很多字段(例如 40-50)。
编辑
我已经试过了ModelMapper and DozerMapper but apparently they don't work well on Android (ModelMapper issue and DozerMapper issue).
提前致谢。
正如 Adam Vincent 所说,在干净的架构中,领域模型是核心,除此之外,每一层都应该只在必要时定义自己的模型。
我的日常工作涉及多个使用干净架构的项目。我们通常发现自动映射工具没有提供太多价值。原因是,干净的架构从根本上就是消除从领域层到 implementation/intrastructural 层的依赖性。自动映射器工具倾向于支持有限的转换,甚至强制您的持久层模型(例如 DTO)一对一地匹配域类型。这往往会限制域和持久层模型根据其不同职责进行定制的能力。
特别是,域 类 通常包含一组与相应持久层 类 略有不同的字段。我们更喜欢使用不可变类、构造函数和手动实现的映射逻辑等模式(前者大大简化了后者的维护)。这确保了域和持久性模型之间的转换得到明确和仔细的考虑。