1. Определение и диаграмма моделирования UML
Отделить построение сложного объекта от его представления, чтобы один и тот же процесс построения мог создавать разные представления.

2. Сценарии использования:
Несколько компонентов или частей можно собрать в один объект, но получаемые результаты работы одинаковы.
Класс продукта очень сложен, или разные последовательности вызовов в классе продукта дают разные эффекты.
Инициализация объекта особенно сложна, например использование нескольких конструкторов или множества параметров, все со значениями по умолчанию.
3. Основные классы
- (1) Абстрактный класс продукта: компьютер.
- (2) Builder: абстрактный Builder, который стандартизирует сборку продукта. Подклассы обычно реализуют конкретный процесс сборки.
- (3) MacbookBuilder: конкретный класс Builder, класс, который непосредственно создаёт объекты.
- (4) Directror: унифицирует процесс сборки.
Сосредоточимся на сборке компьютера: главным образом сборка системного блока, установка операционной системы и настройка монитора.
4. Конкретное использование
4.1 Абстрактный класс Computer
Computer.java
4.2 Конкретный класс продукта MacBook
MacBook.java
4.3 Абстрактный строитель
Builder.java
4.4 Конкретный строитель
MacBookBuilder.java
4.5 Класс Director, отвечающий за конкретное построение Computer
Director.java
4.6 Конкретное использование
Test.java
5. Итоги
Чтобы гибко конструировать сложные объекты, объект будет иметь несколько переменных-членов. При внешнем вызове создавать все переменные-члены сразу не обязательно и неудобно. В этом случае использование нескольких конструкторов для создания объектов затрудняет сопровождение. В этот момент паттерн проектирования Builder решает эту проблему, создавая объекты в методе build() и передавая builder. Builder хранит переменные-члены переданного объекта.
Автор: OneXzgj
Ссылка: https://www.jianshu.com/p/f958ba891467