让一个二传手返回“这个”是不是不好的做法?
2022-08-31 05:23:24
让java中的setter返回“this”是一个好主意还是坏主意?
public Employee setName(String name){
this.name = name;
return this;
}
此模式可能很有用,因为这样您就可以像这样链接 setter:
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);
...但它有点违反标准惯例。我想这可能是值得的,因为它可以使那个设置者做一些其他有用的事情。我见过这种模式在某些地方使用(例如JMock,JPA),但它似乎并不常见,并且通常仅用于定义良好的API,其中这种模式无处不在。
更新:
我所描述的显然是有效的,但我真正寻找的是一些关于这是否普遍可以接受的想法,以及是否存在任何陷阱或相关的最佳实践。我知道 Builder 模式,但它比我所描述的要复杂一些 - 正如 Josh Bloch 所描述的那样,有一个关联的静态 Builder 类用于对象创建。