El Singleton es un término que se utiliza en Ingeniería del software. Es un patrón de diseño que restringe la creación de objetos de una clase/valor a un único objeto.

Singleton programación

Es decir, cuando una clase emplea Singleton, esa clase no puede crear más de una instancia.

Esto es muy útil, por ejemplo, para crear una clase 'controlador' que solo sea instanciada una vez.

Hay que tener en cuenta que en lenguajes como Java, el recolector de basura no actúa debido a que está internamente autorreferenciada.

Ejemplo en Java

SingletonTest

Código en Singleton.java:

public class Singleton {
    private static Singleton instancia = null;

    private Singleton(){}

    public static Singleton getInstance() {
        if (instancia == null) {
        	instancia = new Singleton();
        }
        
        return instancia;
    }
}

Para probar el ejemplo anterior deberemos crear dos instancias del objeto con el getInstance y comprobar que ambas son iguales (código en Main.java):

Singleton o1 = Singleton.getInstance();
Singleton o2 = Singleton.getInstance();

System.out.println(o1.equals(o2));
true como la respuesta en consola