Паттерн строитель, как и любой порождающий паттерн, является абстракцией над конструктором. Строитель предоставляет набор методов для настройки аргументов, передаваемых в конструктор создаваемого объекта.

Главная идея паттерна - отделение логики агрегации аргументов, от самой логики создания объектов.

Это может быть полезно для:

Параметр - набор тип+имя находящийся в сигнатуре метод

public void A(int a, char b);

Аргумент - значение передающееся в метод.

A(1, '2');

Реализация

Так как конечная цель строителя - создать объект, его атрибуты, должны повторять параметры конструктора, который строитель будет создавать.

Ни в какой момент, строитель не хранит готовый объект собираемого типа. Такая реализация ведёт к тому, что мы встраиваем мутабельность для инициализации в объект, то, чего мы как раз хотели избежать. Реализуя билдер через модификацию созданного объекта, вы проектируете объект с оглядкой на строителя, соответсвенно приоритет в отношении между типами смещается не в ту сторону.

Глобально можно выделить два типа строителей: