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:

Java Entwurfsmuster: Builder (design pattern)
Java Entwurfsmuster: Builder (design pattern)

In diesem Artikel erfährst du:

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

builder design pattern program output
Beispiel Builder-Ausgabe

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.

Über den Autor

Jozef Wagner

Leitender Java-Entwickler

Ich programmiere seit mehr als 10 Jahren in Java, arbeite derzeit bei msg life Slovakia als leitender Java-Programmierer und helfe Kunden bei der Umsetzung ihrer Anforderungen in die Versicherungssoftware Life Factory. In meiner Freizeit entspanne ich gerne in den Bergen oder spiele ein gutes Computerspiel.

Informieren Sie uns über sich