ANÚNCIO

~/questoes/programacao

Que padrão de design garante que apenas uma instância do Repository exista durante a execução da aplicação?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Curso de Node JS Aula 11 Refatorar para o MVC Pattern Repository
Para fixar

Singleton Pattern no Repository: Uma Única Instância para Toda a Aplicação

Conceito central

O Singleton Pattern garante que apenas uma instância de uma classe exista durante toda a execução da aplicação. No contexto do Repository, isso significa que a conexão com o banco de dados é compartilhada, economizando recursos e evitando duplicações desnecessárias.

Por que essa resposta faz sentido

O Singleton Pattern mantém uma única instância compartilhada do Repository, o que otimiza o uso de recursos e evita múltiplas conexões redundantes com o banco de dados. Isso é especialmente importante em Node.js, onde cada conexão consome memória e conexões TCP.

Armadilhas comuns

  • Confundir Singleton com Factory Pattern, achando que ambos controlam instâncias da mesma forma (Factory cria múltiplas, Singleton garante uma única).
  • Pensar que Singleton é apenas uma nomeação teórica, não percebendo que no Node.js ele acontece naturalmente quando você importa um objeto uma única vez e o reutiliza.
  • Acreditar que é preciso sempre criar uma nova instância do Repository em cada controller, quando na verdade devemos importar a mesma instância compartilhada.

Entenda as alternativas

A

O Singleton Pattern de fato garante uma única instância do Repository que é reutilizada em toda a aplicação. Quando o arquivo SelecaoRepository.js é importado em diferentes controllers, todos recebem a mesma instância, não novas cópias.

B

O Factory Pattern cria novas instâncias conforme necessário, o oposto do que queremos em um Repository. Se usássemos Factory, teríamos múltiplas conexões com o banco, desperdiçando recursos.

C

O Strategy Pattern permite trocar implementações em tempo de execução, mas não garante instância única. É útil para flexibilidade de comportamento, não para controlar quantas cópias da classe existem.

D

O Observer Pattern notifica múltiplos objetos sobre mudanças, criando uma relação de comunicação entre classes. Não está relacionado a garantir uma única instância de um objeto.

Dica prática: No Node.js, implemente Singleton exportando uma única instância da classe no arquivo do Repository: crie a classe, depois exporte `new SelecaoRepository()`. Ao importar esse arquivo em diferentes controllers, todos acessarão a mesma instância, sem precisar de código extra de Singleton.

Revise pensando: Se você importar SelecaoRepository.js em 5 controllers diferentes, quantas instâncias do Repository existirão na memória durante a execução da aplicação?