2
respostas

Remover if's nos construtores

Existe uma forma para remover esse tanto de IF's dentro do construtor?

2 respostas

Olá Oswaldo, tudo bem?

Entendo sua preocupação em relação à quantidade de IF's dentro do construtor. Uma forma de remover essa quantidade de IF's é utilizando o padrão de projeto chamado "Builder". Com ele, é possível criar objetos complexos passo a passo, sem a necessidade de usar vários construtores.

O padrão Builder consiste em criar uma classe Builder que recebe os valores necessários para construir o objeto e, em seguida, retorna o objeto desejado. Dessa forma, é possível criar um objeto com diversos atributos sem precisar passar todos eles no construtor.

Veja um exemplo de como utilizar o padrão Builder:

public class Pessoa {
    private String nome;
    private int idade;
    private String endereco;

    public static class Builder {
        private String nome;
        private int idade;
        private String endereco;

        public Builder nome(String nome) {
            this.nome = nome;
            return this;
        }

        public Builder idade(int idade) {
            this.idade = idade;
            return this;
        }

        public Builder endereco(String endereco) {
            this.endereco = endereco;
            return this;
        }

        public Pessoa build() {
            return new Pessoa(this);
        }
    }

    private Pessoa(Builder builder) {
        this.nome = builder.nome;
        this.idade = builder.idade;
        this.endereco = builder.endereco;
    }
}

Dessa forma, é possível criar um objeto Pessoa passando apenas os atributos necessários:

Pessoa pessoa = new Pessoa.Builder()
                .nome("João")
                .idade(30)
                .build();

Espero ter ajudado e bons estudos!

Mas caso eu não saiba qual vai ser o atributo que vira null? Por exemplo em um caso onde eu consumo uma outra aplicação

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software