Singleton - Tensho97/Aprende-a-Aprender GitHub Wiki

Patrón Singleton


Usos y Ventajas

  • Utilidad

-Asegurar que una clase tiene una sola instancia y proporcionar un punto de acceso global a ella.

  • Ventajas

-Es necesario cuando hay clases que tiene que gestionar de manera centralizada un recurso.

-Una variable global no garantiza que sólo se instancie una vez.

Como se hace?

-El constructor de la clase DEBE SER PRIVADO.

-Se proporciona un método ESTÁTICO en la clase que devuelve LA ÚNICA INSTANCIA DE LA CLASE: getInstance()

public class CSingleton {

    //atributo
    private  static CSingleton laInstancia = new CSingleton;       

    //constructor
    private CSingleton(){             
    }

    //metodo
    public static CSingleton getInstance(){  
       return laInstancia;
    }
}

Inconvenientes

Se podría obtener una nueva instancia usando el esquema anterior:

//Se define una nueva clase que extienda del patron e implemente cloneable.
public class MiCSingleton extends CSingleton implements Cloneable{}

----

//En una aplicacion crea un objeto de tu neva clase que extiende de singleton
MiCSingleton mcs = new MiCSingleton();

//Usando el metodo clone() proporcionado por la interface obtenemos una nueva instancia
MiCsingleton mcsCopia = mcs.clone();

Para solucionar esto: definimos la clase que usamos para el patrón como final :

public final class CSingleton {. . .}


Autor : Miguel