Já li algumas vezes, pessoas aconselhando a utilizando o Builder Pattern quando fosse necessário construir objetos mais complexos (3 ou mais parametros no construtor).
Comecei a modelagem de um novo projeto, e fui procurar casos para "experimentar "o Builder Pattern:
Um caso bem simples:
Endereco residenciaDoCliente = new Endereco()
.naRua(“Rua de Teste”)
.numero(“1000”)
.noBairro(“Bairro”)
.naCidadeDe(“Venâncio Aires”)
.noEstado(“RS”)
.comCepDe(“95800-000”);
Mas fiquei me perguntando se o Builder não teria o mesmo efeito de utilizar Setter’s:
Endereco residenciaDoCliente = new Endereco();
residenciaDoCliente.setNomeDaRua(“Rua de Teste”);
residenciaDoCliente.setNumeroDaResidencia(“100”);
residenciaDoCliente.setBairro(“Bairro”);
residenciaDoCliente.setCidade(“Venâncio Aires”);
residenciaDoCliente.setEstado(“RS”);
residenciaDoCliente.setCep( new CEP(“95800-000”) );
Ou se ainda seria melhor usar um Builder com Construtor com Tiny Types?
Endereco residenciaDoCliente = new Endereco().Builder( new Rua(“Rua de Teste”), new NumeroResidencia(“1309”), new Bairro(“Bairro”), new Cidade(“Venâncio Aires”), new Estado(“RS”), new CEP(“95800-000”) );
Já que ao utilizar o construtor ele garante a consistência do objeto, já que todos os parametros são de preenchimento obrigatório. Mas em relação ao Builder e Setter’s ambos permitem deixar lacunas vazias no objeto. (a diferença é que o builder permite objetos imutáveis?)
Gostaria da opinião de vocês sobre a criação de objetos?