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:

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

Java Developer Senior

Viac ako 10 rokov programujem v Jave, momentálne pracujem v msg life Slovakia ako Java programátor senior a pomáham zákazníkom implementovať ich požiadavky do poistného softvéru Life Factory. Vo voľnom čase si rád oddýchnem v lese, prípadne si zahrám nejakú dobrú počítačovú hru.

Informieren Sie uns über sich