Я бы пошел на это, чтобы избежать ошибки, связанной с тем, что имя и метод имеют одно и то же имя:
public class User {
private String name;
public String getName() {
return name;
}
public User setName(String name) {
this.name = name;
return this;
}
}
User user = (new User()).setName('Me').setPhone('1234');
Кажется, что имя шаблона - «свободный интерфейс», а «сцепление методов»называется его реализация методов сцепления.Практически, они описывают одно и то же, но «свободный интерфейс» был общепринятым названием для шаблона.
Вы можете объединить несколько методов (не только для задания свойств), включая различные объекты:
user.addBall(ball)
.inflateAllBalls()
.getFirstBall() // returns a ball
.roll() // roll is a method in the Ball class
.setColor("red");
Минусы чрезмерного использования метода:
- Вы не можете проверять объекты, чтобы избежать исключений нулевого указателя (это самый большой недостаток IMO)
- методы будут возвращать 'this'объект, который нелогичен (см. setName в моем примере)
- при возврате других объектов, например объекта ball, читаемость кода уменьшается
- при вызове методов в той же строке.отладку становится немного сложнее, потому что вы ставите точку останова в строке, где может быть объединено 10 методов.