Queria saber se é uma boa prática, ao ter uma classe mutável instanciar a mesma e ir usando seus setters como abaixo, ao invés de ter todos os parâmetros internos de Leilao e só no final instanciar tudo.
Parece-me que instanciar tudo deve ser usado sempre que a mesma for imutável. É isso mesmo?
package br.com.caelum.pm73.dominio.builder;
import java.util.Calendar;
import br.com.caelum.pm73.dominio.Leilao;
import br.com.caelum.pm73.dominio.Usuario;
public class LeilaoDataBuilder {
private Leilao leilao = new Leilao("PlayStation 4", 1000.0, new Usuario("Dono", "dono@gmail.com"), false);
public static LeilaoDataBuilder builder(){
return new LeilaoDataBuilder();
}
public LeilaoDataBuilder com(String nome){
leilao.setNome(nome);
return this;
}
public LeilaoDataBuilder tendoComo(Usuario dono){
leilao.setDono(dono);
return this;
}
public LeilaoDataBuilder abertoHoje(){
leilao.setDataAbertura(Calendar.getInstance());
return this;
}
public LeilaoDataBuilder abertoDiasAtras(int quantidadeDiasAtras){
Calendar dataAbertura = Calendar.getInstance();
dataAbertura.clear(Calendar.HOUR_OF_DAY);
dataAbertura.clear(Calendar.MINUTE);
dataAbertura.clear(Calendar.SECOND);
dataAbertura.clear(Calendar.MILLISECOND);
dataAbertura.add(Calendar.DAY_OF_MONTH, -quantidadeDiasAtras);
leilao.setDataAbertura(dataAbertura);
return this;
}
public LeilaoDataBuilder usado(){
leilao.setUsado(true);
return this;
}
public LeilaoDataBuilder encerrado(){
leilao.encerra();
return this;
}
public Leilao construir(){
return leilao;
}
}