gpt4 book ai didi

java - 向现有 DTO 类或新 DTO 类添加新字段哪个更好?

转载 作者:行者123 更新时间:2023-11-29 02:57:51 28 4
gpt4 key购买 nike

这可能是一个一般的java问题

DTO1

  1. 属性1
  2. 属性2
  3. 属性3

DTO2

  1. 属性1
  2. 属性2
  3. 属性3
  4. 属性4
  5. 属性5
  6. 属性6
  7. 属性7
  8. 属性8
  9. 属性9
  10. 属性10
  11. 属性11
  12. 属性12

我将在屏幕上的 gxt 网格中显示一些值列表。这些值只不过是 DTO1 类的列表,其中我有 3 个字符串,我将从服务调用中获取这些字符串。现在我需要以类似的方式显示 12 个不同的字段,但基于一个条件(这次我不会显示 DTO1)。

使用这 12 个字段创建一个新的 DTO2 类或将这 12 个字段添加到现有的 DTO1 类是否更好(性能方面)更好,这样我就不必再创建一个新的 DTO2 类。

案例 1. 向现有 DTO 类添加额外字段
每次使用 DTO 类时只有 3 个属性而不是新添加的 12 个属性时,不会有额外的空间吗?

案例 2. 创建新的 DTO2 类
是否可以通过将这 12 个字段添加到案例 1 中的 DTO1 来补偿创建的额外空间?

阐明哪种方法可以提高性能?

最佳答案

如果您的 DTO2 的 12 个属性中有 3 个与 DTO1 的类型相同,您绝对应该使用继承:

class DTO1{

private String attribute1;
private String attribute2;
private String attribute3;

//getters and setters
}

class DTO2 extends DTO1{

private String attribute4;
//other attributes
}

并在需要全部 12 个属性的地方使用 DTO2,在只需要 3 个属性时使用 DTO1。

如果您的 DTO2 没有至少 3 个与 DTO1 类型相同的属性,您应该创建一个新的单独的 DTO2 类。将所有 12 个属性添加到 DTO1 并仅使用其中的 3 个是没有意义的,因为当您创建 DTO1 的实例时,JVM 将为所有 12 个属性分配内存,即使您没有初始化其他 9 个(每个引用将占用 4/8 字节——取决于运行 JVM 的机器)。

当然,多几个字节是微不足道的,除非你处理 数百万 的 DTO。但是如果我们考虑设计,以及将来您需要多种 DTO 的可能性,您不应该只依赖一种类型的 DTO 来完成您的工作。

至于DTO2字段增加的额外空间,没办法。如果你需要12个属性,你必须为它们分配内存,所以这里没有错。

关于java - 向现有 DTO 类或新 DTO 类添加新字段哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26754446/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com