【发布时间】:2017-07-25 14:39:49
【问题描述】:
我研究了一下,我不确定。
我有一个需要返回一堆数据的进程。我将数据放在一个 Result 类中:
public final class Result implements Serializable {
/** Inmmutable class
*
*/
private static final long serialVersionUID = -916675731077365794L;
private final String nick;
private final LocalDateTime date_init;
private final LocalDateTime date_end;
private final double profit;
private final double tax;
private final Double balance;
private final int inputs;
private final List<CustomObjects> inputs_by_month;
// Keep going...
// constructor
Results(String nick, LocalDateTime date_init, LocalDateTime date_end,
double profit, double tax/* Keep going... */) {
super();
this.nick = nick;
this.date_init = date_init;
this.date_end = date_end;
this.profit = profit;
this.tax = tax;
/* Keep going... */
}
/* getters here */
}
我不确定如何创建这个对象。是的,我可以使用工厂类
public final class ResultFactory {
private String nick;
private LocalDateTime date_init;
private LocalDateTime date_end;
private double profit;
private double tax;
private Double balance;
private int inputs;
private List<CustomObjects> inputs_by_month;
// Keep going...
public Result getResult()
{
return Result(nick,date_init,date_end,/*...*/);
}
public void setNick(String nick)
{
this.nick = nick;
}
public void setDateInit(LocalDateTime date_init){
this.date_init = date_init;
}
/* ... */
}
但我正在复制整个结构。看起来不太对。
我正在寻找一种在不可变类中存储数据的模式。
【问题讨论】:
-
如果你总是直接使用
Result构造函数呢?我认为您应该将该类拆分为更多类,并将这些类作为属性添加到Result。 -
您使用的是 Builder 而不是 Factory,这很好,这就是您应该使用 Builder 的方式,只是我不应该持有任何逻辑
-
@alayor 我把我的过程分成不同的子类,每个类收集不同的数据。
标签: java design-patterns serialization store