这可能是一般的java问题
DTO1
DTO2
我将在屏幕上的gxt网格中显示一些值列表。这些值只不过是DTO1类的列表,其中我有3个字符串,我将从服务调用获得。现在我需要以类似的方式显示12个不同的字段,但是基于条件(这次我不会显示DTO1)。
使用这12个字段创建新的DTO2类或将这12个字段添加到现有DTO1类是否更好(性能明智),这样我就不必再创建新的DTO2类了。
案例1.在现有DTO课程中添加了额外字段
每次我使用DTO类只有3个属性而不是新添加的12个属性时,是否会有额外的空间?
案例2.创建了新的DTO2类
通过将这12个字段添加到DTO1,可以补偿创建的额外空间,如情况1?
对哪种方法提高性能有所了解?
答案 0 :(得分:1)
尽管两种方法在技术上可能都是正确的,但出于以下原因,我更倾向于创建新的DTO而不是添加更多字段:
答案 1 :(得分:0)
我真的不担心表现,因为我不相信所提到的方法之间存在合理的差异。如果您将来需要添加/编辑字段,我宁愿考虑最佳设计实践,以便您维护应用程序。我认为在这里只有你需要的单独的dto是最好的。如果每个dto使用可以放在父类中的相同基本字段,并且将其余字段添加到子类,则也可以使用继承。对于您的示例,属性1,2,3将在父类上进行,其余属于子类。
答案 2 :(得分:0)
如果您的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
}
并使用DTO2,只要您需要所有12个属性,并在需要3个属性时使用DTO1。
如果你的DTO2没有至少3个与DTO1相同类型的属性,你应该创建一个新的单独的DTO2类。将所有12个属性添加到DTO1并且只使用其中的3个没有任何意义,因为当您创建DTO1的实例时,JVM将为它们中的所有12个分配内存,即使您没有初始化这些属性也是如此。其他9(每个引用将占用4/8字节 - 取决于JVM正在运行的机器)。
当然,除非你处理数百万的DTO,否则几个字节是无关紧要的。但是如果我们考虑设计和未来你需要多种DTO的可能性,你不应该只依靠一种类型的DTO来完成你的工作。
至于DTO2字段添加的额外空间,没有办法解决。如果你需要12个属性,你必须为它们分配内存,所以这里没有错。