Java 向现有DTO类添加新字段还是向新DTO类添加新字段更好?
这可能是一个一般的java问题 DTO1Java 向现有DTO类添加新字段还是向新DTO类添加新字段更好?,java,dto,Java,Dto,这可能是一个一般的java问题 DTO1 属性1 属性2 属性3 DTO2 属性1 属性2 属性3 属性4 属性5 属性6 属性7 属性8 属性9 属性10 属性11 属性12 我将在屏幕上的gxt网格中显示一些值列表。这些值只是DTO1类的列表,其中我有3个字符串,我将从服务调用中获得这些字符串。现在我需要以类似的方式显示12个不同的字段,但基于一个条件(这次我不会显示DTO1) 使用这12个字段创建一个新的DTO2类,或者将这12个字段添加到现有的DTO1类中,这样我就不必再创建一个新的DT
每次我只为3个属性而不是新添加的12个属性使用DTO类时,会不会有额外的空间 案例2。创建了新的DTO2类
是否可以通过将这12个字段添加到DTO1(如案例1所示)来补偿创建的额外空间
了解一下哪种方法可以提高性能?我真的不担心性能,因为我不相信上述方法之间存在合理的差异。我宁愿考虑最好的设计实践,这将允许您在将来需要添加/编辑字段时维护应用程序。我认为只有你需要的才有一个单独的dto在这里是最好的。如果每个dto都使用可以放入父类的相同基本字段,并将其余字段添加到子类中,则也可以使用继承。例如,属性1、2、3在父类上,其余在子类上。如果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。但是,如果我们考虑到设计,以及未来的需要,你将需要多种类型的DTOs,你不应该只依赖一种类型的DTO来完成你的工作。
至于DTO2字段添加的额外空间,没有办法。如果需要12个属性,则必须为它们分配内存,因此这里没有问题。虽然这两种方法在技术上都是正确的,但出于以下原因,我更倾向于创建新的DTO,而不是添加更多字段:
为什么DTO2不能扩展DTO1?所以你只把属性4改为12谢谢丹尼尔,我现在明白了。