Singleton
Singleton é um design pattern criacional que garante que uma classe possua uma única instância e define um ponto de acesso global para ela.
Introdução
Algumas vezes faz sentido que em um sistema exista apenas uma única instância de uma certa classe, por exemplo, arquivos de configurações que leia propriedades de um único arquivo, ou para enviar arquivos à uma impressora.
Mesmo que o Singleton pareça ser um dos patterns mais populares e um dos mais fáceis de se implementar, ainda existem algumas funcionalidades do Java como concorrência e serialização que podem deixar algumas brechas na implementação do pattern, brechas estas que precisamos cobrir para garantir que nossas instâncias do Singleton são realmente, únicas.
Dito isso, este post não será apenas “mais um rápido tutorial sobre Singleton”, mas irá mostrar como escrever um código realmente aderente ao contrato do pattern, tanto usando uma classe Java comum quanto sua versão alternativa com enum
.