Builder -Muster -Definition: Trennen Sie die Konstruktion eines komplexen Objekts von seiner Darstellung, damit der gleiche Konstruktionsprozess unterschiedliche Darstellungen erzeugen kann.
Das Builder -Muster besteht darin, Schritt für Schritt ein komplexes Objekt zu erstellen, mit dem Benutzer diese nur durch Angeben des Typs und des Inhalts komplexer Objekte erstellen können. Benutzer kennen die spezifischen internen Konstruktionsdetails nicht. Der Builder -Modus ist dem abstrakten Fabrikmodus sehr ähnlich.
Warum den Builder -Modus verwenden?
Es soll den Prozess des Aufbaus komplexer Objekte aus seinen Komponenten entkoppeln. Hinweis: Es ist der Entkopplungsvorgang und die Komponenten.
Da ein komplexes Objekt nicht nur viele große Mengen von Komponenten wie Autos hat, gibt es viele Teile: Räder, Lenkrad, Motor und verschiedene kleine Teile usw. Es gibt viele Teile, aber es ist weit mehr als diese Um diese Teile in ein Auto für Automobile zu montieren, ist dieser Montagevorgang auch sehr kompliziert (erfordert eine gute Montage -Technologie), und das Builder -Modell soll die Komponenten und den Montageprozess trennen.
So verwenden Sie den Builder -Modus
Nehmen wir zunächst an, dass ein komplexes Objekt aus mehreren Komponenten besteht.
Erstens ist eine Schnittstelle erforderlich, die definiert, wie verschiedene Komponenten komplexer Objekte erstellt werden:
Die Codekopie lautet wie folgt:
öffentliche Schnittstelle Builder {
// Komponente A erstellen. Erstellen Sie beispielsweise Autoläder
void BuildParta ();
// Komponente B erstellen B, z. B. das Erstellen eines Autolenkrades
void BuildPartb ();
// Komponente C erstellen C, z. B. das Erstellen eines Automotors
void BuildPartc ();
// das Ergebnis der Endmontage zurückgeben (zurück zum letzten montierten Auto)
// Der Montageprozess des fertigen Produkts wird hier nicht durchgeführt, sondern in die unten stehende Direktor -Klasse übertragen.
// Dies realisiert den Entkopplungsprozess und die Komponenten
Produkt getResult ();
}
Verwenden Sie Director, um das letzte komplexe Objekt zu erstellen, und die obige Builder -Schnittstelle fasst zusammen, wie Komponenten erstellt werden (komplexe Objekte bestehen aus diesen Komponenten), dh wie der Inhalt des Direktors, wie sie die Komponenten endgültig in fertige Produkte zusammenstellen:
Die Codekopie lautet wie folgt:
öffentlicher Klassendirektor {
Privatbuilderbauer;
Public Director (Builder Builder) {
this.builder = builder;
}
// Schließlich wird Parta partb partc verwendet, um ein komplexes Objekt zu bilden
// Dies ist der Prozess der Montage des Radlenkrades und des Motors in ein Auto
public void construct () {
Builder.buildParta ();
builder.buildPartb ();
builder.buildPartc ();
}
}
Die spezifische Implementierung des Builder Concretebuilders:
1. Erstellen oder Zusammenstellen von Produktkomponenten, indem Sie den Schnittstellenbauer ausfüllen;
2. Definieren und klären Sie, welche spezifischen Dinge es erstellen möchte.
3. Stellen Sie eine Schnittstelle zur Verfügung, die das Produkt wieder aufnehmen kann.
Die Codekopie lautet wie folgt:
öffentliche Klasse Concretebuilder implementiert Builder {
Teil parta, partb, partc;
public void BuildParta () {
// Hier ist der spezifische Code, wie man Parta erstellt
};
public void buildPartb () {
// Hier ist der spezifische Code, wie man PartB erstellt
};
public void buildpartc () {
// Hier ist der spezifische Code, wie man PartB erstellt
};
öffentliches Produkt getResult () {
// kehren Sie zum Ergebnis der Endmontage zurück
};
}
Komplexes Objekt: Produkt:
Die Codekopie lautet wie folgt:
öffentliches Schnittstellenprodukt {}
Komponenten komplexer Objekte:
Die Codekopie lautet wie folgt:
öffentliche Schnittstelle Teil {}
Lassen Sie uns sehen, wie Sie den Builder -Modus anrufen:
Die Codekopie lautet wie folgt:
Concretebuilder Builder = New Concretebuilder ();
Direktor Director = New Director (Builder);
Director.Construct ();
Product product = builder.getResult ();
Builder -Modus -Anwendung
In der tatsächlichen Verwendung von Java verwenden wir häufig das Konzept von "Pool".
"Pool" ist tatsächlich ein Stück Speicher. Die Speicherverwendung wird verbessert. Ändern Sie die Director -Klasse im Builder -Modus, um zu diagnostizieren, welche Komponente das "Breaking -Glied" gebrochen ist, und reparieren Sie dann diese Komponente.