Builder
Definição
O padrão Builder organiza a criação de objetos complexos em etapas, especialmente quando eles têm muitas partes ou configurações opcionais.
Esse padrão é útil quando um objeto precisa ser criado em várias etapas ou tem muitos atributos opcionais. Ele ajuda a deixar o código mais organizado e fácil de entender.
Por que é importante
Ao criar objetos com muitos detalhes, usar um construtor direto pode deixar o código difícil de manter e propenso a erros. O Builder facilita a criação passo a passo e dá mais controle sobre cada parte da construção.
Também evita construtores com muitos parâmetros e melhora a legibilidade do código, tornando mais claro quais valores estão sendo definidos.
Exemplo prático (Python)
Imagine que estamos criando um objeto Relatorio
com várias
partes opcionais:
# Objeto complexo
class Relatorio:
def __init__(self):
self.titulo = None
self.conteudo = None
self.rodape = None
def exibir(self):
print("=== RELATÓRIO ===")
if self.titulo:
print(f"Título: {self.titulo}")
if self.conteudo:
print(f"Conteúdo: {self.conteudo}")
if self.rodape:
print(f"Rodapé: {self.rodape}")
# Builder
class RelatorioBuilder:
def __init__(self):
self.relatorio = Relatorio()
def com_titulo(self, titulo):
self.relatorio.titulo = titulo
return self
def com_conteudo(self, conteudo):
self.relatorio.conteudo = conteudo
return self
def com_rodape(self, rodape):
self.relatorio.rodape = rodape
return self
def construir(self):
return self.relatorio
Uso do builder:
builder = RelatorioBuilder()
relatorio = (
builder
.com_titulo("Vendas 2024")
.com_conteudo("Dados atualizados do trimestre.")
.com_rodape("Confidencial")
.construir()
)
relatorio.exibir()
O Builder permite montar o relatório por partes, de forma fluida e clara. Também é possível criar versões diferentes omitindo etapas.