Это хорошая или плохая идея, чтобы сеттеры в 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 для создания объектов.
this
. Иногда я даже изменяю функцию так, чтобы вместо возврата значения она работала с членом объекта, просто чтобы я мог это сделать. Это замечательно. :)