Singleton — Design Pattern em .NET

Mais um artigo sobre Design Pattern! Lembrando, que estou traduzindo os artigos do portal DoFactory :)

No final coloquei um exemplo do projeto em .NET Core, só clonar e rodar!

Imagem TOP1 no Google Search Images haha

Definição

Garante que a classe tenha apenas uma instância e providencie um ponto global de acesso.

Frequência do uso: MÉDIO ALTO

Diagrama de Classes UML

Participantes

As classes e objetos participantes nesse pattern são:

Singleton (LoadBalancer)

  • Define uma operação de instância que permite clientes acessarem sua única instância. Instância é a classe de operação;
  • Responsável por criar a manter sua instância.

Código Estrutural em C#

Esse código estrutural demonstra o pattern Singleton garantindo uma única instância (o singleton) da classe que está sendo criada.

Output
Objects are the same instance [Objetos são a mesma instância]

Código no mundo real em C#

Esse código real demonstra o pattern Singleton como um objeto LoadBalancing. Somente uma única instância (o singleton) da classe pode ser criada, porque os servidores podem se manter on-line ou off-line dinamicamente, e cada requisição precisa ser realizada através do objeto que conhece o estado da (web) farm.

Output
Same instance
ServerIII
ServerII
ServerI
ServerII
ServerI
ServerIII
ServerI
ServerIII
ServerIV
ServerII
ServerII
ServerIII
ServerIV
ServerII
ServerIV

FONTE: Prototype Pattern em DoFactory

Projeto .NET Core