Technischer Projektleiter
Java Entwurfsmuster (design pattern): Builder
Heute werfen wir einen Blick auf ein weiteres Entwurfsmuster (Java design pattern) aus der Kategorie der Muster zur Erstellung von Objekten (Kreationsmuster) – Builder. Lies mehr über Entwurfsmuster – eine Serie von Entwurfsmustern:
- Entwurfsmuster Singleton
- Entwurfsmuster Prototyp
- Entwurfsmuster Factory
- Entwurfsmuster Abstract Factory
- Entwurfsmuster Adapter
Was ist das Entwurfsmuster Builder?
Das Entwurfsmuster Builder ist ein Software-Entwurfsmuster, das dazu dient, die Konstruktion komplexer Objekte zu vereinfachen, indem es in eine Reihe von Schritten aufgeteilt wird.
Welches Problem wird durch das Entwurfsmuster Builder gelöst?
Es löst das Problem der Erstellung von Objekten mit einer großen Anzahl von Parametern oder optionalen Eigenschaften. Anstatt Konstruktoren mit einer langen Parameterliste zu haben, ermöglicht uns das Builder-Muster, Objekte mithilfe übersichtlicher Schritte zu erstellen. Das Entwurfsmuster Builder funktioniert so, dass wir eine separate Klasse namens Builder haben, die für die schrittweise Erstellung eines Objekts verantwortlich ist. Diese Klasse bietet Methoden zum Einstellen einzelner Objekteigenschaften. Wenn schließlich alle Eigenschaften festgelegt sind, können wir die build()-Methode verwenden, um das Objekt selbst zu erstellen.
Beispiel Builder Implementierung in Java
Jetzt schauen wir uns an, wie man das Entwurfsmuster Builder in Java implementiert. Product.java In diesem Beispiel haben wir die Klasse Product erstellt, die ein Produkt repräsentiert. Die Klasse Product hat einen privaten Konstruktor und eine eingebettete Klasse Builder, die schrittweise die Eigenschaften des Objekts festlegt. Mit den Methoden setTitle, setDescription und setPrice können wir die einzelnen Eigenschaften festlegen. Schließlich rufen wir die Methode build() auf, die ein Objekt vom Typ Product erstellt. Danach können wir das erstellte Objekt verwenden und seine Eigenschaften abrufen.
package designpatterns;
public class Product {
private String title;
private String description;
private double price;
// Private constructor to prevent instantiation of the object
private Product(Builder builder) {
this.title = builder.title;
this.description = builder.description;
this.price = builder.price;
}
// Getters for object attributes (title, description, price)
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public double getPrice() {
return price;
}
// Design Pattern Builder
public static class Builder {
private String title;
private String description;
private double price;
public Builder() {
// Default values, or we can omit the constructor and initialize values in setters
this.title = "";
this.description = "";
this.price = 0.0;
}
public Builder setTitle(String title) {
this.title = title;
return this;
}
public Builder setDescription(String description) {
this.description = description;
return this;
}
public Builder setPrice(double price) {
this.price = price;
return this;
}
public Product build() {
return new Product(this);
}
}
}
Hier ist ein Beispiel für die Verwendung der Klasse Product mit der Implementierung des Designmusters Builder: Main.java In diesem Beispiel haben wir das Builder-Muster verwendet, um ein Objekt vom Typ Product zu erstellen, aber dieses Muster ist für jedes Objekt geeignet, dessen Eigenschaften komplizierter gesetzt werden müssen.
import designpatterns.Product;
// Example
public class Main {
public static void main(String[] args) {
Product produkt = new Product.Builder()
.setTitle("Japanese tea Gyokuro")
.setDescription("Quality shaded Japanese green tea")
.setPrice(29.99)
.build();
System.out.println("Title: " + produkt.getTitle());
System.out.println("Description: " + produkt.getDescription());
System.out.println("Price: " + produkt.getPrice());
}
}
Ausgabe des Beispiels
Wir haben die Dateien mit dem oben genannten Java Builder-Beispiel in Form von Code vorbereitet, den du direkt in Java ausführen kannst. Lade den Code hier herunter.