在Java中,将setter方法返回“this”是好的还是坏的想法?
public Employee setName(String name){
this.name = name;
return this;
}
这个模式很有用,因为你可以像这样链接多个设置器:
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
不要这样做:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
......但这似乎违反了标准惯例。我认为这样做可能是值得的,因为它可以使setter执行其他有用的操作。我已经在一些地方看到了这种模式的使用(例如JMock、JPA),但它似乎并不常见,通常只用于非常明确定义API的情况下。
更新:
我描述的内容显然是有效的,但我真正想要的是一些关于是否普遍可接受的思考,以及是否存在任何陷阱或相关最佳实践。我知道生成器模式,但它比我描述的东西更复杂--如Josh Bloch所描述的那样,它需要一个关联的静态生成器类来创建对象。
this
。有时,我甚至改变函数的行为,使其不返回值,而是操作对象的成员,只是为了能够这样做。这太棒了。 :) - Inversus