A programação de um padrão Singleton na linguagem java usual...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é: Errado (E).
Vamos entender por que a alternativa está incorreta:
O padrão Singleton é um dos Design Patterns mais utilizados na programação orientada a objetos, especialmente em Java. Seu objetivo é garantir que uma classe tenha apenas uma instância e fornecer um ponto global de acesso a essa instância. Para implementar o Singleton em Java, é usual declarar um método chamado getInstance
, que é responsável por retornar a única instância da classe.
Porém, a questão menciona que o método getInstance
deve ser declarado como um método de instância, o que é incorreto. Na verdade, o método getInstance
deve ser declarado como um método estático (static
). Isso porque métodos de instância exigem que o objeto já exista para serem chamados, o que contraria o propósito do Singleton, que é criar e gerenciar uma única instância de forma controlada.
Vamos detalhar como seria uma implementação típica de Singleton em Java:
public class Singleton {
// Instância única da classe, inicializada de forma preguiçosa
private static Singleton instance;
// Construtor privado para evitar instanciamento externo
private Singleton() {}
// Método estático que retorna a única instância da classe
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Observe que:
- A instância única da classe é armazenada em uma variável estática (
private static Singleton instance;
). - O construtor da classe é privado para evitar que a classe seja instanciada diretamente.
- O método
getInstance
é declarado como estático (public static synchronized Singleton getInstance()
), permitindo que seja chamado sem a necessidade de uma instância da classe.
Resumo: O método getInstance
deve ser estático, e a questão erra ao afirmar que ele deve ser de instância. Portanto, a resposta correta é Errado (E).
Espero que esta explicação tenha esclarecido o conceito de Singleton e por que a alternativa está incorreta. Se tiver mais dúvidas, fique à vontade para perguntar!
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
Complementando, para ter acesso ao objeto, será executado algo como:
MinhaSingleton A,B;
A=MinhaSingleton.getInstance();
B=MinhaSingleton.getInstance();
=>A e B referenciam o msm objeto;
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo