Introdução
O último artigo examinou o caso geral de usar o padrão do construtor, mas a opção não foi abordada quando o objeto é criado em etapas no tempo.
O Builder Pattern (Builder) é um modelo de design gerador que permite criar gradualmente objetos complexos. É especialmente útil quando o objeto tem muitos parâmetros ou várias configurações. Um dos exemplos interessantes de seu uso é a capacidade de separar o processo de criação de um objeto no tempo.
Às vezes, o objeto não pode ser criado imediatamente – seus parâmetros podem se tornar conhecidos em diferentes estágios do programa.
Um exemplo no Python
Neste exemplo, o objeto do carro é criado em estágios: primeiro, parte dos dados é carregada no servidor e o usuário insere as informações ausentes.
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)
Imagine uma chamada de API, a entrada de dados ocorra em diferentes partes do aplicativo, ou mesmo em diferentes bibliotecas. Então, o uso do padrão do construtor se torna mais óbvio do que em um exemplo simples acima.
Vantagens
– A saída é uma estrutura imunológica que não precisa armazenar dados opcionais para montagem temporária
– O objeto é coletado gradualmente
– Evitando designers complexos
– O código de montagem do objeto é incompleto apenas em uma essência do construtor
– Conveniência de entender o código
Fontes
https://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional-ebook/dp/B000SEIBB8
https://demensdeum.com/blog/2019/09/23/builder-pattern/