假设我们有一个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模式包含已经提供的构造函数/工厂方法?
答案 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;
}
}