Sobes.tech
Junior

Qual é a vantagem do padrão de projeto Builder em comparação com um construtor comum?

sobes.tech IA

Resposta da IA

A vantagem é a seguinte:

  • Legibilidade e clareza do código: Com um grande número de parâmetros, o construtor torna-se volumoso e difícil de ler. O padrão Builder permite atribuir valores aos parâmetros pelos seus nomes, tornando o código mais compreensível.
// Sem Builder
ComplexObject obj = new ComplexObject(value1, value2, null, true, null, value6);

// Com Builder
ComplexObject obj = new ComplexObject.Builder()
    .setValue1(value1)
    .setValue2(value2)
    .setFlag(true)
    .setValue6(value6)
    .build();
  • Suporte para parâmetros opcionais: Nem todos os parâmetros são sempre necessários. O padrão Builder facilita a criação de objetos com diferentes combinações de parâmetros opcionais, evitando múltiplos construtores sobrecarregados.
  • Imutabilidade (opcional): O padrão Builder é frequentemente usado para criar objetos imutáveis, o que aumenta a segurança e simplifica a programação multithread. O objeto é criado completamente configurado em um único passo.
  • Controle sobre a ordem de definição dos parâmetros: Embora não seja óbvio, o padrão Builder pode controlar a ordem em que os parâmetros são definidos, se necessário (por exemplo, para parâmetros dependentes).
  • Melhoria na testabilidade: Os métodos setters no Builder são mais fáceis de testar em comparação com um construtor grande.