Tenho uma dúvida sobre a aula 08 - Factories, de como melhorar o código conforme mencionado pelo instrutor nos minutos 08:45 até 09:45
public class FabricaDeAluno {
private Aluno aluno;
public FabricaDeAluno comNomeCPFEmail(String nome, String cpf, String email) {
this.aluno = new Aluno(nome, new CPF(cpf), new Email(email));
return this;
}
public FabricaDeAluno comDDDETelefone(String ddd, String numero) {
this.aluno.adicionarTelefone(ddd, numero);
return this;
}
public Aluno criar() {
return this.aluno;
}
public static void main(String[] args) {
// Cenário perfeito
FabricaDeAluno fabricaDeAluno = new FabricaDeAluno();
Aluno aluno = fabricaDeAluno.comNomeCPFEmail("", "", "")
.comDDDETelefone("", "").comDDDETelefone("", "").criar();
// Dois problemas que podem acontecer
// 1º Problema
FabricaDeAluno fabricaDeAluno = new FabricaDeAluno();
Aluno aluno = fabricaDeAluno
.comDDDETelefone("", "") // -> Chamar esse método antes do próximo pode gerar um nullPointer
.comNomeCPFEmail("", "", "")
.comDDDETelefone("", "")
.criar();
// 2º Problema
FabricaDeAluno fabricaDeAluno = new FabricaDeAluno();
Aluno aluno = fabricaDeAluno
.comNomeCPFEmail("", "", "")
.comDDDETelefone("", "")
.comNomeCPFEmail("", "", "") // -> Não faz sentido deixar chamar esse método novamente.
.criar();
}
Relacionado a esses dois problemas pontuado, como poderia ser refatorada essa classe para que esses problemas não aconteçam ?
Desde já agradeço!