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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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:比较两个具有大约10个或更多属性的对象_Java_Design Patterns_Compare_Comparison_Mapper - Fatal编程技术网

Java:比较两个具有大约10个或更多属性的对象

Java:比较两个具有大约10个或更多属性的对象,java,design-patterns,compare,comparison,mapper,Java,Design Patterns,Compare,Comparison,Mapper,从com.ow.vo.computer.applicationSage中的RestUI获取数据 从数据库获取数据 比较下面给出的每个内容 public void compare(com.ow.vo.computer.ApplicationUsage src, ApplicationUsage dest) { if(!Objects.equals(src.getApplicationItemCost(), dest.getApplicationItemCost())) {

从com.ow.vo.computer.applicationSage中的RestUI获取数据

从数据库获取数据

比较下面给出的每个内容

public void compare(com.ow.vo.computer.ApplicationUsage src, ApplicationUsage dest) {
    if(!Objects.equals(src.getApplicationItemCost(), dest.getApplicationItemCost())) {
        dest.setApplicationItenCost(src.getApplicationItemCost);
    }
    if(!Objects.equals(src.getAvgUsageTime(), dest.getAvgUsageTime())) {

    }
    if(!Objects.equals(src.getBundleApplicationId(), dest.getBundleApplicationId())) {

    }
    if(!Objects.equals(src.getBundleApplicationName(), dest.getBundleApplicationName())) {

    }
    if(!Objects.equals(src.getDiscoveredDate(), dest.getDiscoveredDate())) {

    }
 .
 . 
 .
若有任何更新,则只将其更新到数据库中,否则不更新

src和dest的结构几乎相同,但日期类型不同,如Source have String和dest have date

有谁能建议更优雅的方式或设计模式来处理这种情况,而不是逐个比较每个领域


业务逻辑:(从数据库中加载区块以获得100条记录,点击rest api以获得100条记录。将每条记录1乘以1进行比较(该1中的所有属性)。如果没有差异,则什么也不做。如果差异合并它,如果新创建记录,如果rest api中不存在,则也从数据库中删除。)

难道你不能将
src
映射到你的
dest
类型,然后应用一个简单的合并策略吗?难道你不能定义一个包含所有常用方法/字段的接口或抽象类吗?既然setter是一个单一的快速操作,为什么还要费心进行比较呢?只需为每个属性调用
dest.setX(src.getX())
,而不管目标属性是否已经具有相同的值。@Lino:如果没有差异,那么我们需要忽略它record@Michael:如果没有差异,那么我们不会像我说的那样插入任何更改,然后更新到数据库,否则不会。所以,如果我直接设置,我如何检查是否要保留、创建新的或删除任何现有的。