Índice:
Definição - O que significa Singleton?
Um singleton é uma classe que permite que apenas uma única instância seja criada e dá acesso a essa instância criada. Ele contém variáveis estáticas que podem acomodar instâncias exclusivas e privadas de si mesmo. É usado em cenários em que um usuário deseja restringir a instanciação de uma classe a apenas um objeto. Isso é útil geralmente quando um único objeto é necessário para coordenar ações em um sistema.
O padrão singleton é usado em linguagens de programação como Java e .NET para definir uma variável global. Um único objeto usado nos sistemas permanece constante e precisa ser definido apenas uma vez e não muitas vezes.
Techopedia explica Singleton
Um singleton destina-se a fornecer apenas uma instância de si mesmo, facilitando um ponto de acesso global. A implementação de um padrão singleton envolve a criação de uma classe com um método que cria uma nova instância da classe. Para implementar um padrão singleton, os princípios de instância única e acesso global devem ser atendidos. A classe singleton é como um repositório global para uma instância em si, tornando o construtor privado. Portanto, uma instância fora da classe não pode ser criada e um singleton pode conter apenas uma instância. Uma classe singleton é instanciada e mantém essa instância entre sistemas.
Os padrões abstratos de fábrica, construtor e protótipo podem usar singletons. Objetos de fachada e objetos estáticos são geralmente singletons. A implementação Singleton requer um mecanismo através do qual um membro da classe possa ser acessado sem a necessidade de criar um objeto de classe e manter o valor dos membros da classe entre os objetos da classe. As etapas envolvidas na criação de um singleton são as seguintes:
- O construtor é tornado privado. Isso permite que apenas a classe tenha acesso ao singleton.
- Uma única instância interna da classe é criada usando um método O método é chamado de instância neste exemplo. O método "instance" é usado para inicializar a classe para acessar uma única instância. O método da instância é marcado como estático neste exemplo para fornecer acesso consistente a todos os threads. Fora da criação da instância, a instrução "lock" é usada para controlar o acesso multithread. Isso bloqueia a criação da instância em um único encadeamento.
Exemplo:
// Criação lenta da instância interna singletonInstância pública testdata estática
{
Obter
{
Bloquear (tipo de (testdata))
{
If (_instance == null)
_instance = testdata ();
}
Return _instance;
}
}
Exemplo:
classe testdata
{
Testdata privado ()
{
//… sem opção para um singleton
