O que pensam dessa solução para construir um objeto que seja complexo.
public class Veiculo {
private String modelo;
private String marca;
private String cor;
public String toString(){
return modelo+" "+marca+""+cor;
}
protected Veiculo(String modelo,String marca,String cor){
this.marca=marca;
this.cor=cor;
this.modelo=modelo;
}
public static class Builder{
private String modelo;
private String marca;
private String cor;
public Builder modelo(String m){
modelo=m;
return this;
}
public Builder marca(String m){
marca=m;
return this;
}
public Builder cor(String m){
cor=m;
return this;
}
public Veiculo criar(){
return new Veiculo(modelo,marca,cor);
}
}
}
public class Main {
//http://stackoverflow.com/questions/328496/when-would-you-use-the-builder-pattern
//Para amenizar o problemas de ter varioas seters e não saber quando o objeto está pronto!
public static void main(String[] args) {
Veiculo veiculo= new Veiculo.Builder().cor("verde").marca("X").modelo("Y").criar();
System.out.println(veiculo);
}
}
Os argumentos usados nessa discussão são:
1)O uso de vários seters para a criação de objetos complexos com alto número de parâmetros não deixa claro se o objeto foi criado adequadamente.
2)Vários construtores sobrecarregados também deixam o código puco legível.
3)A construção fica a cargo de um objeto chamado Builder diminuindo assim o baixo acoplamento.
Concordam :?: