Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance del constructor (con modificadores de acceso como protegido o privado).
La instrumentación del patrón puede ser delicada en programas con múltiples hilos de ejecución.
Los críticos consideran al singleton como un anti-patrón utilizando en escenarios donde no es beneficioso, introduce restricciones innecesarias donde una única instancia de una clase no es realmente requerida y agrega un estado global en la aplicación.
[1][2] El patrón singleton provee una única instancia global gracias a que: Una implementación del patrón singleton en ActionScript es la siguiente: Una implementación del patrón singleton en Autoit es la siguiente: Un ejemplo correcto de inicialización diferida y segura en entornos multi-hilo en C# sería: Una solución posible en C++ (conocida como el singleton de Meyers) en la cual el singleton es un objeto local estático (notar que esta solución no es segura en programas multi-hilo): Una posible implementación en D sería: Esta implementación ha sido sacada de [1] y está basada en la sobreescritura de los métodos NewInstance y FreeInstance que se hereda de la clase TObject, la madre de todos los objetos en Embarcadero Delphi.
Se deja para comentar un error común en Java al no tener en cuenta la sincronización de métodos.