1. Definition und UML-Modellierungsdiagramm
Trenne die Konstruktion eines komplexen Objekts von seiner Darstellung, sodass derselbe Konstruktionsprozess verschiedene Darstellungen erzeugen kann.

2. Anwendungsszenarien:
Mehrere Komponenten oder Teile können zu einem Objekt zusammengesetzt werden, aber die resultierenden Operationsergebnisse sind dieselben.
Die Produktklasse ist sehr komplex, oder unterschiedliche Aufrufreihenfolgen in der Produktklasse erzeugen unterschiedliche Effekte.
Das Initialisieren eines Objekts ist besonders komplex, z. B. wenn mehrere Konstruktoren verwendet werden oder viele Parameter vorhanden sind, die alle Standardwerte haben.
3. Kernklassen
- (1) Abstrakte Produktklasse: Computer.
- (2) Builder: der abstrakte Builder, der den Zusammenbau des Produkts standardisiert. Unterklassen implementieren in der Regel den spezifischen Montageprozess.
- (3) MacbookBuilder: die konkrete Builder-Klasse, die Klasse, die konkret Objekte erstellt.
- (4) Directror: vereinheitlicht den Montageprozess.
Fokus auf den Zusammenbau eines Computers, hauptsächlich das Zusammenbauen des Hosts, das Einrichten des Betriebssystems und das Einrichten des Monitors.
4. Spezifische Verwendung
4.1 Abstrakte Computer-Klasse
Computer.java
4.2 Konkrete Produktklasse MacBook
MacBook.java
4.3 Abstrakter Builder
Builder.java
4.4 Konkreter Builder
MacBookBuilder.java
4.5 Director-Klasse, verantwortlich für die konkrete Konstruktion von Computer
Director.java
4.6 Konkrete Verwendung
Test.java
5. Zusammenfassung
Um komplexe Objekte flexibel zu konstruieren, verfügt das Objekt über mehrere Membervariablen. Beim externen Aufruf ist es nicht notwendig oder praktisch, alle Membervariablen auf einmal zu erstellen. In diesem Fall ist die Verwendung mehrerer Konstruktoren zum Erstellen von Objekten schwer zu warten. An diesem Punkt löst das Builder-Entwurfsmuster dieses Problem, indem es Objekte in der build()-Methode erstellt und den Builder übergibt. Der Builder verwaltet die Membervariablen des übergebenen Objekts.
Autor: OneXzgj
Link: https://www.jianshu.com/p/f958ba891467