С каким шаблоном проектирования ассоциируется класс StringBuilder?

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

Ответ

StringBuilderStringBuffer) является классической реализацией шаблона Строитель (Builder).

Почему это Builder? Шаблон Builder отделяет конструирование сложного объекта от его представления. StringBuilder предоставляет fluent-интерфейс для пошагового создания сложной строки, скрывая внутренний механизм (массив символов).

Пример:

StringBuilder sb = new StringBuilder();
String result = sb.append("Hello, ")  // Шаг 1
                 .append("world!")    // Шаг 2
                 .insert(7, "beautiful ") // Шаг 3
                 .toString(); // Финальное получение объекта

Ключевые признаки паттерна в StringBuilder:

  1. Поэтапное конструирование: Методы append(), insert(), replace().
  2. Отделение процесса от результата: Внутренний буфер (char[]) скрыт, финальная строка получается вызовом toString().
  3. Fluent-интерфейс: Методы возвращают this, позволяя строить цепочки вызовов.

Отличие от классического GoF Builder: StringBuilder создаёт продукт (строку) того же типа, что и сам строитель, и часто используется для оптимизации конкатенации, а не только для создания разных представлений.