Singleton vulnera el principio de responsabilidad única, puesto que la idea es que una clase tenga una única instancia siendo el punto de acceso para otros. Es así que, los problemas que aborda este patrón son:
El principal problema que se desea controlar es el de garantizar que una clase tenga una única instancia.
Ejemplo: supongamos que tenemos un recurso compartido como puede ser una base de datos o archivo a la cual queremos acceder. Su acceso se realizará a través de una sola instancia, la instancia que ya fue creada, y no a través de varias conexiones (instancias).
A través de un constructor normal este tipo de funcionamiento no puede responder a esta particularidad, puesto que siempre se devuelve un objeto diferente.