Está en la página 1de 13

Patrones de diseño

PATRON SINGLETON
Propósito

 Asegurar que una clase tiene una única


instancia y proporciona un punto de acceso
global a la misma, a través de un
método/campo
Implementación

 Controlar la creación de la instancia


 El constructor(es) de la clase no debe ser accesible globalmente.
 No debe permitirse la subclasificación o la herencia

 Seguimiento de la instancia
 La misma clase es un buen lugar para el seguimiento a la instancia

 Proporcionando acceso a la instancia única


 un método estático público es una buena opción.
 puede exponer la instancia como campo final public static, pero no
funcionará para todas las implementaciones de singleton
Estructura
Participantes

 Client: Componente que desea obtener la instancia de la clase


Singleton.

 Singleton: Clase que implementa el patrón Singleton, de la cual


únicamente se podrá tener una instancia durante toda la vida de la
aplicación.
Secuencia

1. El cliente solicita la instancia al Singleton mediante el método estático


getInstance.

2. El Singleton validará si la instancia ya fue creada anteriormente, de no


haber sido creada entonces se crea una nueva.

3. Se regresa la instancia creada en el paso anterior o se regresa la


instancia existente en otro caso.
Cuando Utilizarlo

 Cuando es requerido tener una única instancia en toda la aplicación y


se requiere un acceso global a la misma.

 Cuando la creación de objetos por medio del operador new es


perjudicial.
Escenario

 Se ha solicitado crear una aplicación que, como parte de su


proceso de inicio, cargue la configuración persistida en un archivo
de propiedades, esta configuración deber. estar disponible para
toda la aplicación incluyendo los módulos que ésta podría tener.
Dicha configuración tiene un requerimiento especial y es que
deber. existir un solo objeto de configuración en toda la aplicación,
en la cual todos los módulos puedan interactuar, de tal manera
que si un módulo afecta alguna propiedad de la configuración el
resto de módulos lo pueda ver reflejado.
Flujo de ejecución sin el patrón
Singleton.
La solución

 Para resolver el problema de la configuración, utilizaremos el patrón


de diseño Singleton, el cual nos permitirá controlar la forma en la
que creamos un objeto de configuración, el patrón de diseño
limitará la creación de este objeto a una única instancia para toda
la aplicación; de esta manera cuando un modulo quiera obtener el
objeto de configuración éste recibirá la misma instancia que el
resto de módulos.
 Todos los módulos podrán ver la misma información en el objeto y
de la misma manera, cuando alguien realice un cambio sobre ésta,
serán visibles para todos los módulos.
Flujo de ejecución utilizando el patrón
Singleton
La implementación

También podría gustarte