DTO应该包含不同的构造函数吗?

时间:2013-09-13 08:31:37

标签: java design-patterns dto

假设我们有一个DTO,其中包含24个Long类型的字段(一天中每小时一个字段)。大多数情况下,我们需要在其所有领域中都使用零的DTO实例。我们现在正在做的事情看起来很长:

MyDTO day1 = new MyDTO();
day1.setQuantityHour1(new Long(0));
day1.setQuantityHour2(new Long(0));
day1.setQuantityHour3(new Long(0));
day1.setQuantityHour4(new Long(0));
...

是否反对DTO模式包含已经提供的构造函数/工厂方法?

3 个答案:

答案 0 :(得分:2)

不,我认为在这种情况下工厂方法(或通常是创建模式)没有任何问题。通常,您需要某种Creational Pattern来将对象的构造与其功能/业务逻辑分离。在您的情况下,作为DTO,您可能没有业务逻辑,但我不认为如果您有一些复杂的构建规则,那么使用Creational Pattern会更不合适。在这种情况下,Builder模式甚至可以工作。如果构造足够简单,请将它放在构造函数中。

答案 1 :(得分:0)

如果你在DTO中使用原始类型long - 它们将自动用0L初始化。

答案 2 :(得分:0)

您可以将所有实例变量定义为基本数据类型long。因此,当我们创建对象时,所有变量都将被初始化为0.示例代码如下所示。 包org.smarttechie;

public class SampleDTO {
    private long quantityHour1;
    private long quantityHour2;
    public long getQuantityHour1() {
        return quantityHour1;
    }
    public void setQuantityHour1(long quantityHour1) {
        this.quantityHour1 = quantityHour1;
    }
    public long getQuantityHour2() {
        return quantityHour2;
    }
    public void setQuantityHour2(long quantityHour2) {
        this.quantityHour2 = quantityHour2;
    }
}