Coisa única

Definição - o que significa Singleton?

Um singleton é uma classe que permite que apenas uma única instância de si mesmo 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 quando um usuário deseja restringir a instanciação de uma classe a apenas um objeto. Geralmente, isso é útil 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, em vez de várias vezes.

Definirtec explica Singleton

Um singleton se destina a fornecer apenas uma instância de si mesmo, facilitando um ponto global de acesso. 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 satisfeitos. A classe singleton é como um repositório global para uma instância de si mesma, 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 se instancia e mantém essa instância nos sistemas.

Os padrões abstratos de fábrica, construtor e protótipo podem usar singletons. Objetos de fachada e objetos estáticos costumam ser singletons. A implementação de singleton requer um mecanismo por meio do qual um membro da classe pode 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:

  1. O construtor é tornado privado. Isso permite que apenas a classe tenha acesso ao singleton.
  2. Exemplo:
    classe testdata
    {
    Dados de teste privados ()
    {
    // ... no-op para um singleton

  3. Uma única instância interna da classe é criada usando um método. O método é chamado de instância neste exemplo. O método “instância” é 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 thread.

    Exemplo:

    // Criação lenta de instância interna singleton
    Instância pública de dados de teste estáticos
    {
    Conheça as
    {
    Lock (tipo de (testdata))
    {
    If (_instance == null)
    _instance = testdata ();
    }
    Return _instance;
    }
    }