Хороша чи погана ідея змусити сетерів у Java повернути "це"?
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
. Іноді я навіть змінюю функцію, щоб замість повернення значення вона працювала на члені об'єкта, просто так я можу це зробити. Це прекрасно. :)