Patrón Singleton

 

 

Este patrón nos ayuda a no repetir un mismo proceso en diferentes instancias de otras clases.

Consiste en garantizar un punto de acceso global de el resto de clases de nuestra aplicación como puede ser la coenxión a la base de datos. No se encarga de la creación de objetos en sí, sino que se enfoca en la restricción en la creación de un objeto.

El uso del patrón Singleton proporciona los siguientes beneficios:

  • Reduce el espacio de nombres. El patrón es una mejora sobre las variables globales. Ya no se reservan nombres para las variables globales, ahora solo existen instancias
  • Controla el acceso a la instancia única, porque la clase Singleton encapsula la única instancia. Así se obtiene control sobre cómo y cuándo se accede a ella.
  • Permite el refinamiento de las operaciones y la representación.
  • Permite un numero variable de instancias. El patron es facilmente configurable para permitir más de una instancia
  • Más flexible que las operaciones de clases

Veamos un ejemplo con la conexión a una base de datos:

En el ejemplo de punto anterior vimos como en una clase resultaba útil implementar un método para conectarse y desconectarse el cual llamábamos desde los diferentes métodos de manipulación de los datos.

Esto nos resuelve el problema de tener que codificar multiples veces el código de acceso a la BD en la clase. Pero, ¿Qué ocurre sí tenemos que conectarnos desde diferentes clases?

Para resolverlo haremos una clase utilizando este patrón el cual lo que realiza es una instalación de sí misma donde mediante un método getConexion estático para llamarlo directamente almacena la conexión en un atributo estático de la misma clase. (Este atributo es estático para permitir su visibilidad desde la llamada del método).

CLASE DE CONEXIÓN:

De esta manera, ahora podemos realizar el proceso de conectarnos a la base de datos desde cualquier método de nuestra aplicación.

CLASE DAO:

Por lo que en los métodos del crud cuando realicemos el preparestatement, lo aremos desde el atributo (objeto dbconection) de la misma clase.

Ejemplo_DAO_SINGLETON