Это хорошая или плохая идея, чтобы сеттеры в java возвращали "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);
... но это как бы идет вразрез со стандартным соглашением. Я полагаю, что это может быть полезно только потому, что это может заставить этого сеттера сделать что-то еще полезное. Я видел, что этот шаблон использовал некоторые места (например, JMock, JPA), но он кажется необычным и обычно используется только для очень четко определенных API, где этот шаблон используется везде.
Обновление:
То, что я описал, очевидно справедливо, но я действительно ищу некоторые мысли о том, является ли это в целом приемлемым, и есть ли какие-либо подводные камни или связанные с ними передовые практики. Я знаю о шаблоне Builder, но он немного сложнее, чем то, что я описываю - как описывает его Джош Блох, для создания объекта существует связанный статический класс Builder.