A modo off-topic, relacionado con lo que ha dicho
masterpuppet.
Muchos consideran el patrón singleton un anti-patrón por que muchos caen en el error de tratar de emular el uso de las variables globales, lo cual en la OOP es algo que debemos evitar a toda costa, uno de los grandes problemas es la ocultación de las dependencias, por ejemplo, un método puede que utilice un variable singleton pero en la declaración no nos informa absolutamente nada de esa dependencia, tendríamos que inspeccionar el código para darnos cuenta, ahora imagina si la misma regla aplica no a una si no a cientos de clases, hace sumamente difícil depurar el código.
Otro punto importante es la reusabilidad, puede que queramos utilizar una clase en otro proyecto pero al no saber que depende de un singleton pues ya sabrás las consecuencias iníciales.
Utiliza singleton si es
necesario, usa "
la inyección de dependencias" en las clases que utilicen el singleton para evitar los dolores de cabeza antes mencionados.
Un saludo y suerte !