1
resposta

Dúvida construtor ContaService

Na aula, a classe Service ficou assim:

public class ContaService {

    private ConnectionFactory connection;
    private Set<Conta> contas = new HashSet<>();

    public ContaService() {
        this.connection = new ConnectionFactory();
    }

//    public ContaService() {
//        
//    }

Tenho uma dúvida: O que mudaria se, em vez de instanciar uma ConnectionFactory no construtor da classe Service, eu instanciar no atributo private ConnectionFactory connection = new ConnectionFactory() e deixasse o construtor vazio? Qual a diferença, haja vista que eu continuo coneguindo acessar os métodos da classe ConnectionFactory desta maneira? E qual o motivo de intanciar uma ConnectionFactory no construtor da Service?

1 resposta

Oi, Lucas! Tudo bem?

Quando instanciamos a ConnectionFactory diretamente no atributo, como em private ConnectionFactory connection = new ConnectionFactory();, essa instanciação ocorre no momento em que o objeto ContaService é criado, antes mesmo do construtor ser chamado, o que significa que cada vez que uma instância de ContaService é criada, ela automaticamente cria uma nova ConnectionFactory, independentemente de qualquer lógica que possamos querer adicionar no construtor.

Por outro lado, ao colocar a instanciação dentro do construtor, como em:

public ContaService() {
    this.connection = new ConnectionFactory();
}

temos mais controle sobre o processo de criação da ConnectionFactory, o que permite, por exemplo, que possamos adicionar lógica condicional antes de criar a instância ou que configuremos a ConnectionFactory de maneiras específicas dependendo de diferentes condições ou parâmetros passados para o construtor.

No contexto do curso, instanciando a ConnectionFactory dentro do construtor podemos garantir que cada ContaService tenha sua própria conexão configurada e pronta para uso assim que for instanciada. Isso é especialmente útil em aplicações que dependem de configurações específicas de conexão que podem precisar ser ajustadas ou verificadas antes do uso. Além disso, instanciar dentro do construtor pode facilitar a manutenção do código e a realização de testes.

Espero ter ajudado!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓