O design pattern singleton é um dos padrões mais simples e possui um objetivo bem específico, garantir que apenas um objeto de uma determinada classe seja criado.
Quando precisamos criar apenas um objeto de uma determinada classe. Um exemplo seria quando precisamos de apenas um objeto para conexão com o banco de dados.