Modèle du générateur: en phase de création d’un objet dans le temps

Introduction

Le dernier article a examiné le cas général de l’utilisation du motif du constructeur, mais l’option n’a pas été touchée lorsque l’objet est créé par étapes dans le temps.
Builder Pattern (Builder) est un modèle de conception générateur qui vous permet de créer progressivement des objets complexes. Il est particulièrement utile lorsque l’objet a de nombreux paramètres ou diverses configurations. L’un des exemples intéressants de son utilisation est la possibilité de séparer le processus de création d’un objet dans le temps.
Parfois, l’objet ne peut pas être créé immédiatement – ses paramètres peuvent être connus à différentes étapes du programme.

Un exemple sur Python

Dans cet exemple, l’objet de la voiture est créé par étapes: d’abord, une partie des données est chargée à partir du serveur, puis l’utilisateur entre les informations manquantes.

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)

Imaginez un appel API, la saisie de données se produit dans différentes parties de l’application, ou même dans différentes bibliothèques. Ensuite, l’utilisation du motif du constructeur devient plus évidente que dans un exemple simple ci-dessus.

Avantages

– La sortie est une structure immunitaire qui n’a pas besoin de stocker des données facultatives pour l’assemblage temporaire
– L’objet est collecté progressivement
– Éviter des concepteurs complexes
– Le code d’assemblage de l’objet n’est pas incompétent uniquement dans une essence de constructeur
– commodité de comprendre le code

Sources

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