Como garantimos que uma classe tenha somente uma instância ...

Próximas questões
Com base no mesmo assunto
Q879914 Arquitetura de Software

Como garantimos que uma classe tenha somente uma instância e que essa instância seja facilmente acessível? Uma variável global torna um objeto acessível, mas não impede você de instanciar múltiplos objetos.

GAMMA, E. et al. Padrões de Projeto: Soluções reutilizáveis de software orientado a objetos. Porto Alegre: Bookman, 2000.


Em relação ao exposto e ao padrão de projeto Singleton, assinale alternativa que indica uma das vantagens do referido padrão.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a Alternativa A

Padrão Singleton: O padrão de projeto Singleton é amplamente utilizado em desenvolvimento de software orientado a objetos para garantir que uma classe tenha apenas uma instância e proporcionar um ponto global de acesso a essa instância. Essa abordagem é útil em situações onde é necessário um único objeto para coordenar ações em todo o sistema, como gerenciadores de configuração, pools de conexões de banco de dados, etc.

Justificativa da Alternativa A:

A - O padrão de projeto garante a existência de apenas um único objeto da classe em questão, disponibilizando um modo de acessá-la.
Esta alternativa está correta porque descreve exatamente o propósito do padrão Singleton. Ele assegura que uma classe tenha apenas uma instância e fornece um ponto de acesso global a essa instância. A implementação típica envolve a criação de uma classe com um método estático que retorna a instância única, verificando se a instância já existe antes de criá-la.

Comentários sobre as alternativas incorretas:

B - O padrão aumenta a quantidade de variáveis globais no namespace em questão.
Esta alternativa está incorreta. O padrão Singleton, na verdade, reduz a necessidade de variáveis globais, pois fornece um único ponto global de acesso à instância. Isso ajuda a evitar problemas associados ao uso excessivo de variáveis globais, como conflitos de nomes e dificuldade de manutenção do código.

C - Não é necessário implementar qualquer mecanismo de controle de instância do objeto.
Esta alternativa também está incorreta. A essência do padrão Singleton é precisamente implementar um mecanismo que garante que apenas uma instância da classe seja criada. Sem esse controle, múltiplas instâncias poderiam ser criadas, contrariando o propósito do padrão.

D - O padrão Singleton não apresenta uma interface simples, uma vez que a implementação dele não é trivial.
Esta alternativa é incorreta. Embora a implementação do Singleton possa ter algumas nuances, especialmente quando consideramos problemas de concorrência em ambientes multithread, o padrão em si tem uma interface bastante simples: um método estático que retorna a instância única.

E - O padrão faz necessário o uso de variáveis globais.
Esta alternativa está incorreta porque o padrão Singleton é uma alternativa ao uso de variáveis globais. Ele evita a necessidade de variáveis globais fornecendo um ponto de acesso controlado e centralizado para a instância única da classe.

Espero ter ajudado a esclarecer o tema do padrão Singleton e as razões que tornam a Alternativa A a correta. Se precisar de mais alguma coisa, estou à disposição!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Singleton (única instância)

Digamos que temos uma classe qualquer que chamaremos de Singleton e queremos que em toda a aplicação só exista uma única instância dessa mesma classe, e que você tenha que garantir que isso aconteça, no caso de ser um programador solo, de que você não se esqueça disso e no caso de uma equipe, que ninguém viole essa regra, bem com o padrão de projeto Singleton garantiremos uma única instância para a classe em questão.

 

Letra A

 

https://www.devmedia.com.br/design-patterns-singleton-parte-3/16782

a-

Singleton é usado quandouma classe nao deve ser instanciada, usando-a como interfaceprincipal

a) O padrão de projeto garante a existência de apenas um único objeto da classe em questão, disponibilizando um modo de acessá-la. (Correto)

 

b) O padrão aumenta a quantidade de variáveis globais no namespace em questão.  (Utiliza apenas uma variável de um objeto)

 

c)Não é necessário implementar qualquer mecanismo de controle de instância do objeto. (É necessário utilizar o construtor como private e no método que retorna a variavel verificar se a mesma já foi instanciada.)

 

d) O padrão Singleton não apresenta uma interface simples, uma vez que a implementação dele não é trivial. (Um do padrões mais simples de implementar é o singleton.)

 

e) O padrão faz necessário o uso de variáveis globais.  (Utiliza apenas um variável stática)

o tipo da questão, kkkk

perguntam qual é a vantagem, dai só a A tem vantagem, e na BCDE só escrevem desgraças kkkk

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo