Singleton
- #JavaScript
Hoje venho mostrar um exemplo de Design Patterns muito comum e que muitos devs já usaram ou usam, mas não o conhece, eu estou falando do Singleton.
Mas antes, para quem nunca ouviu falar de Design Patterns eu vou lhe dar uma breve introdução.
Design Patterns são soluções otimizadas e reusáveis para problemas de programação que programadores encontram todos os dias. Um Design Pattern é uma descrição ou um template para resolver um problema que pode ser usado em várias situações. Ele não é especifico de uma linguagem, ou seja, qualquer linguagem de programação pode implementá-lo. Um bom de Design Pattern deve ser implementado na maioria, se não, em todas as linguagens, dependendo das capacidades da linguagem.
Existe três tipos de Design Patterns:
Creational:
- Abstract Factory
- Builder
- Factory Method
- Object Pool
- Prototype
- Singleton
Structural:
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Private Class Data
- Proxy
Behavioral:
- Chain of responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Null Object
- Observer
- State
- Strategy
- Template method
- Visitor
Geralmente os três grupos acima define como os elementos do seu programa se relacionam uns com os outros, como eles são criados, e como eles se comunicam entre si.
Singleton é um Design Pattern do tipo Creational, no qual garante que uma e somente uma instância de uma classe é criada.
Singleton pode ser usado quando:
- Você precisa acessar um recurso compartilhado.
- Acessar um recurso compartilhado vai ser requisitado de múltiplas, partes separadas do seu programa.
- Somente um único objeto pode ser instanciado.
Um exemplo, a conexão com banco de dados, vamos supor que você terá que chamar diversas vezes a conexão com o banco de dados em um código na mesma execução, se você instanciar toda vez a classe de banco, haverá grande perda de desempenho, assim usando o Pattern Singleton, é garantida que nesta execução será instanciada a classe somente uma vez.
No trecho de código abaixo mostro um exemplo do Pattern Singleton para uma conexão com um banco de dados MySQL usando uma função que retornar uma instancia e exporta ela para ser usada por toda a aplicação.