【发布时间】:2010-08-02 17:04:25
【问题描述】:
Joshua Bloch 给出的建议之一是,类应该设计为不可变的。
我有以下课程
public class Dividend {
public Dividend setDate(SimpleDate date) {
Dividend dividend = new Dividend(this.getStock(), this.getAmount(), date);
return dividend;
}
.....// More to go.
对于setDate 方法,this 对象不会被修改。
相反,将返回一个 this 的克隆副本,其日期字段已被修改。
但是,从方法名来看,用户怎么知道这个对象仍然是不可变的?
除了setDate还有更好的命名约定吗?
【问题讨论】:
-
类
Divident是否有修改对象的setComment方法?那么它就不是一成不变的。 -
如果你的 setComment 方法是私有的,那么只有这个类是不可变的。
-
你可以试试
onDate/withDate/forDate等,而不是setDate。 -
我在这个例子中删除了 setComment 以避免混淆。
标签: java