Что такое каскадирование (method chaining) и когда его применяют?

«Что такое каскадирование (method chaining) и когда его применяют?» — вопрос из категории Hibernate, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Каскадирование (Method Chaining) — это паттерн, при котором методы возвращают ссылку на текущий объект (this), позволяя вызывать следующие методы одной цепочкой.

Основная цель: Улучшение читаемости и лаконичности кода для последовательных операций над одним объектом.

Типичные примеры применения в Java:

  1. StringBuilder / StringBuffer:

    String result = new StringBuilder()
        .append("Hello")
        .append(" ")
        .append("World!")
        .toString();
  2. Паттерн Builder:

    Person person = new Person.Builder()
        .name("Alice")
        .age(30)
        .address("Moscow")
        .build();
  3. Сеттеры с каскадированием (не путать с JavaBeans):

    public class Person {
        private String name;
        private int age;
    
        public Person setName(String name) {
            this.name = name;
            return this; // Ключевой момент: возврат this
        }
    
        public Person setAge(int age) {
            this.age = age;
            return this;
        }
    }
    // Использование:
    Person p = new Person().setName("Alice").setAge(30);
  4. Stream API: Цепочка промежуточных операций (filter, map, sorted) — это также форма каскадирования.

Условия для реализации: Метод должен возвращать объект, с которым будет работать следующий вызов (чаще всего this).