Builder -Muster: Phased Erstellen eines Objekts rechtzeitig

Einführung

Der letzte Artikel untersuchte den allgemeinen Fall der Verwendung des Builder -Musters, die Option wurde jedoch nicht berührt, wenn das Objekt rechtzeitig stadiert erstellt wird.
Builder Muster (Builder) ist eine generierende Designvorlage, mit der Sie nach und nach komplexe Objekte erstellen können. Es ist besonders nützlich, wenn das Objekt viele Parameter oder verschiedene Konfigurationen hat. Eines der interessanten Beispiele seiner Verwendung ist die Fähigkeit, den Prozess des Erstellens eines Objekts rechtzeitig zu trennen.
Manchmal kann das Objekt nicht sofort erstellt werden – seine Parameter können in verschiedenen Phasen des Programms bekannt werden.

Ein Beispiel auf Python

In diesem Beispiel wird das Objekt des Autos in Phasen erstellt: Zunächst wird ein Teil der Daten vom Server geladen, dann gibt der Benutzer die fehlenden Informationen ein.

import requests

def fetch_car_data():
    response = requests.get("https://api.example.com/car-info")
    return response.json()

builder = CarBuilder()

# Backend API data
car_data = fetch_car_data()
builder.set_model(car_data["model"])
builder.set_year(car_data["year"])

# User input
color = input("Car color: ")
builder.set_color(color)

gps_option = input("GPS feature? (yes/no): ").lower() == "yes"
builder.set_gps(gps_option)

car = builder.build()
print(car)

Stellen Sie sich einen API -Anruf vor, Dateneingabe treten in verschiedenen Teilen der Anwendung oder sogar in verschiedenen Bibliotheken auf. Dann wird die Verwendung des Builder -Musters offensichtlicher als in einem einfachen Beispiel oben.

Vorteile

– Die Ausgabe ist eine Immunstruktur, die keine optionalen Daten für die temporäre Montage speichern muss
– Das Objekt wird allmählich gesammelt
– Vermeiden Sie komplexe Designer
– Der Assembly -Code des Objekts ist nur in einer Essenz des Erbaus unvollständig
– Bequemlichkeit des Code verstehen

Quellen

https://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional-ebook/dp/B000SEIBB8
https://demensdeum.com/blog/2019/09/23/builder-pattern/