O padrão Singleton garante que uma classe tenha apenas uma instância e fornece um ponto de acesso global a ela. É usado quando exatamente um objeto deve coordenar algo (uma configuração, um pool de conexões, um logger), embora também seja um pouco controverso.
O que Singleton faz
SINGLETON → guarantee a class has only ONE instance, with global access to it:
→ the class controls its own instantiation (private constructor)
→ returns the SAME instance every time it's requested
→ for: things there should only be ONE of, accessed from many places
