:::: MENU ::::

Patrón Singleton


Es un patrón que hace que una clase pueda ser instanciada una única vez. De este modo todos los servicios de la aplicación usan este objeto a través del mismo punto de acceso. Para evitar que se cree más de una instancia, se hace privado el constructor del objeto.

Utilidad

Muy útil a la hora de crear loggers: se crea el objeto una vez y se usa tantas veces como queramos.

Ejemplo

Creamos una clase MySingleton con un constructor privado y un método extra que devuelva una cadena (para poder usarlo después en la clase Main).

MySingleton.java

package com.luisgomezcaballero.singleton_demo;

public class MySingleton {

	private static MySingleton myInstance = null;

	private MySingleton() {
	}

	public static MySingleton getMyInstance() {
		if (myInstance == null) {
			return new MySingleton();
		} else {
			return myInstance;
		}
	}

	public String getString() {
		return "Hello World!";
	}
}

A continuación creamos una clase Main. Aquí tenemos que tener en cuenta que creamos nuestro objeto pero luego no hacemos new, sino que delegamos esta decisión en el método de la clase singleton, que decide si crearlo (en el caso de que no exista) o reutilizar el que existe.

Main.java

package com.luisgomezcaballero.singleton_demo;

public class Main {

	public static void main(String[] args) {

		MySingleton mySingleton = MySingleton.getMyInstance();

		System.out.println(mySingleton.getString());
	}

}

Repositorio

El código de este proyecto puede encontrarse en https://github.com/luisgomezcaballero/singleton-demo.


So, what do you think ?