Ответ
StringBuilder (и StringBuffer) является классической реализацией шаблона Строитель (Builder).
Почему это Builder?
Шаблон Builder отделяет конструирование сложного объекта от его представления. StringBuilder предоставляет fluent-интерфейс для пошагового создания сложной строки, скрывая внутренний механизм (массив символов).
Пример:
StringBuilder sb = new StringBuilder();
String result = sb.append("Hello, ") // Шаг 1
.append("world!") // Шаг 2
.insert(7, "beautiful ") // Шаг 3
.toString(); // Финальное получение объекта
Ключевые признаки паттерна в StringBuilder:
- Поэтапное конструирование: Методы
append(),insert(),replace(). - Отделение процесса от результата: Внутренний буфер (
char[]) скрыт, финальная строка получается вызовомtoString(). - Fluent-интерфейс: Методы возвращают
this, позволяя строить цепочки вызовов.
Отличие от классического GoF Builder: StringBuilder создаёт продукт (строку) того же типа, что и сам строитель, и часто используется для оптимизации конкатенации, а не только для создания разных представлений.