Какой паттерн проектирования реализует класс StringBuilder в Java?

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

Ответ

StringBuilder реализует паттерн Builder (Строитель).

Почему это Builder?

  • Пошаговое конструирование: Позволяет создавать сложный объект (строку) постепенно, добавляя части.
  • Отделение конструирования от представления: Клиентский код использует один и тот же процесс построения (append) для получения разных итоговых строк.
  • Fluent Interface: Методы возвращают this, что позволяет объединять вызовы в цепочку.

Пример на Java:

StringBuilder sb = new StringBuilder();
sb.append("Hello")
  .append(", ")
  .append("World!"); // Поэтапное построение
String result = sb.toString(); // Получение конечного продукта

Ключевое преимущество: Эффективность. В отличие от иммутабельного String, StringBuilder избегает создания множества промежуточных строковых объектов при конкатенации, что критично для производительности в циклах.

Аналог: StringBuffer — потокобезопасная (synchronized) версия Builder для строк.