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.
 ECOSSISTEMA PYTHON
 ECOSSISTEMA PYTHON  LINUX
 LINUX  ASSEMBLY NASM
 ASSEMBLY NASM  JAVA
 JAVA