哪个更好地将新字段添加到现有DTO类或新DTO类?

时间:2014-11-05 10:10:25

标签: java dto

这可能是一般的java问题

DTO1

  1. attribute1
  2. attribute2
  3. attribute3
  4. DTO2

    1. attribute1
    2. attribute2
    3. attribute3
    4. attribute4
    5. attribute5
    6. attribute6
    7. attribute7
    8. attribute8
    9. attribute9
    10. attribute10
    11. attribute11
    12. attribute12
    13. 我将在屏幕上的gxt网格中显示一些值列表。这些值只不过是DTO1类的列表,其中我有3个字符串,我将从服务调用获得。现在我需要以类似的方式显示12个不同的字段,但是基于条件(这次我不会显示DTO1)。

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

      案例1.在现有DTO课程中添加了额外字段
      每次我使用DTO类只有3个属性而不是新添加的12个属性时,是否会有额外的空间?

      案例2.创建了新的DTO2类
      通过将这12个字段添加到DTO1,可以补偿创建的额外空间,如情况1?

      对哪种方法提高性能有所了解?

3 个答案:

答案 0 :(得分:1)

尽管两种方法在技术上可能都是正确的,但出于以下原因,我更倾向于创建新的DTO而不是添加更多字段:

  1. 这使代码更易于阅读:加上良好的命名功能,额外的DTO可使您的后继者乍一看更少的麻烦。
  2. 类应该只有一个改变的理由:将DTO与不相关的字段混为一谈,这将使该类将来有几个改变的原因,从而使其成为无关亲属的失败根源。
  3. 额外的类不会损害您的应用程序。

答案 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个属性,你必须为它们分配内存,所以这里没有错。