Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何减少基于DTO和模型类的计算的重复代码_Java_Design Patterns_Mapping_Dto - Fatal编程技术网

Java 如何减少基于DTO和模型类的计算的重复代码

Java 如何减少基于DTO和模型类的计算的重复代码,java,design-patterns,mapping,dto,Java,Design Patterns,Mapping,Dto,在我们的一个项目中,我们有一些我们想要消除的代码重复:它是关于DTO和模型类上相同计算的代码 例如,我们有以下两种方法: boolean isFreeShipping(CartDto cartDto) { ... } boolean isFreeShipping(CartModel cartModel) { ... } 解决这个问题的最佳方法是什么 仅对模型进行计算,如果需要,将DTO转换为模型 反之亦然 引入一个只包含必要字段的特定值对象,并将其用于计算-使用DTO和模型的映射器 这是重载

在我们的一个项目中,我们有一些我们想要消除的代码重复:它是关于DTO和模型类上相同计算的代码

例如,我们有以下两种方法:

boolean isFreeShipping(CartDto cartDto) {
...
}
boolean isFreeShipping(CartModel cartModel) {
...
}
解决这个问题的最佳方法是什么

  • 仅对模型进行计算,如果需要,将DTO转换为模型
  • 反之亦然
  • 引入一个只包含必要字段的特定值对象,并将其用于计算-使用DTO和模型的映射器

这是重载方法的正确用法,为什么要更改它?重载就是为了这个目的而存在的。基于方法名称,它听起来像是不应该在DTO中的业务逻辑。我认为您应该只为DTO编写业务逻辑,并将其转换为存储库层中的模型对象。我支持@AndrewS。顾名思义,DTO只是用来传输数据的。业务逻辑应该在域模型(而不是持久性模型!)上执行。