Buscar (Don't Edit)

lunes, 24 de diciembre de 2012

Patrones de Diseño: el patrón Singleton

Los patrones de diseño son buenas prácticas dentro del desarrollo de software que nos ayudan a resolver un problema dentro de cierto contexto, el cual determina (junto a otros factores) como aplicar y utilizar dicho patrón. Este es mi primer tutorial y decidí empezar con algo muy práctico y que, estoy seguro, ayudará en el desarrollo de nuestras aplicaciones diarias. Hoy les mostraré el patrón Singleton y su aplicación para una conexión con base de datos MySql.

El patrón Singleton
Éste patrón se asegura de crear una única instancia de una clase y proporciona un punto de acceso global dentro de nuestra aplicación a dicha clase. La ventaja consiste en que, si dentro de tu aplicación, necesitas que varias clases hagan uso de esa instancia (que sería el caso de la conexión con la base de datos), evitamos una inundación de variables globales que almacenen esas instancias. Esto lo logramos declarando las propiedades y el constructor de manera privada, y creando métodos que accedan a esa instancia.

Conexión a base de datos Mysql utilizando el patrón Singleton
Crearemos una clase llamada Conexion, y para empezar declararemos una instancia de ésta clase y un constructor de manera privada:
public class Conexion{
     private static Conexion instancia = null;
     private Conexion(){
     }
}

Ahora, crearemos el punto de acceso a nuestra instancia mediante un método getInstancia:
public static Conexion getInstancia(){
     if(instancia == null){
       instancia = new Conexion();
     }
     return instancia;
}

Para finalizar añadimos una clase que se encargue de tener almacenada la conexión con la base de datos Mysql y un método de acceso a dicha clase.
El código final quedaría de la siguiente manera:

Y eso es todo. Ya tenemos nuestra clase Singleton que nos permite conectarnos a nuestra base de datos Mysql. Si queremos llamarla desde nuestro código:
Conexion.getInstancia().getConexion();
Eso es todo por ahora. Seguiré subiendo tutoriales que implementen patrones de diseño, trataré de que sean ejemplos de problemas cotidianos y que signifiquen un verdadero aporte mas allá del simple conocimiento teórico sobre el patrón en cuestión.

Saludos!

1 comentario: