2 3 5 Patron De DiseñO Singular (Singleton)

10
2_3_5 2_3_5 Patrón de Patrón de Diseño Singular Diseño Singular ( ( Singleton Singleton ) ) Apoyo SSD3 Apoyo SSD3

Transcript of 2 3 5 Patron De DiseñO Singular (Singleton)

Page 1: 2 3 5 Patron De DiseñO Singular (Singleton)

2_3_5 2_3_5 Patrón de Diseño Patrón de Diseño Singular (Singular (SingletonSingleton) )

Apoyo SSD3Apoyo SSD3

Page 2: 2 3 5 Patron De DiseñO Singular (Singleton)

Mtl Lourdes CahuichMtl Lourdes Cahuich 22

IntroducciónIntroducción

En algunas aplicaciones, hay clases que En algunas aplicaciones, hay clases que deben ser instanciadas una sola vez.deben ser instanciadas una sola vez.

Por ejemplo, un sistema operativo debe Por ejemplo, un sistema operativo debe tener solo un sistema de reloj y una tener solo un sistema de reloj y una compañía debe tener solo un sistema compañía debe tener solo un sistema contable. contable.

Page 3: 2 3 5 Patron De DiseñO Singular (Singleton)

Mtl Lourdes CahuichMtl Lourdes Cahuich 33

El El patrón de diseño Singular (Singleton) patrón de diseño Singular (Singleton) asegura que se cree sólo una instancia de asegura que se cree sólo una instancia de la clase y provee un método para acceder la clase y provee un método para acceder esa única instancia.esa única instancia.

Todos los objetos que utilizan una Todos los objetos que utilizan una instancia de una clase Singular utilizan la instancia de una clase Singular utilizan la misma misma instancia instancia

Page 4: 2 3 5 Patron De DiseñO Singular (Singleton)

Mtl Lourdes CahuichMtl Lourdes Cahuich 44

EstructuraEstructura

Observa que los miembros estáticos de la clase están subrayados.

Page 5: 2 3 5 Patron De DiseñO Singular (Singleton)

Mtl Lourdes CahuichMtl Lourdes Cahuich 55

En este patrón de diseñoEn este patrón de diseño

El atributo estático El atributo estático instanceinstance contiene la única contiene la única instancia de la clase.instancia de la clase.

El constructor es definido como El constructor es definido como privateprivate de  de modo que las otras clases no puedan crear modo que las otras clases no puedan crear instancias.instancias.

El método estático El método estático getSingletonInstance getSingletonInstance regresa la única instancia de la clase. regresa la única instancia de la clase.

La primera vez que este método es llamado, La primera vez que este método es llamado, crea la única instancia crea la única instancia

Page 6: 2 3 5 Patron De DiseñO Singular (Singleton)

Mtl Lourdes CahuichMtl Lourdes Cahuich 66

Page 7: 2 3 5 Patron De DiseñO Singular (Singleton)

Mtl Lourdes CahuichMtl Lourdes Cahuich 77

En la línea 10, la variable estática y En la línea 10, la variable estática y privada privada singletonInstancesingletonInstance es es inicializada con una instancia de la inicializada con una instancia de la claseICarnegieInfoclaseICarnegieInfo — —singletonInstance será la única instancia singletonInstance será la única instancia de la clase de la clase ICarnegieInfoICarnegieInfo en una  en una aplicación.aplicación.

En la línea 22, el constructor es definido En la línea 22, el constructor es definido como privado, de modo que otras clases como privado, de modo que otras clases no puedan crear instancias no puedan crear instancias deICarnegieInfodeICarnegieInfo..

Page 8: 2 3 5 Patron De DiseñO Singular (Singleton)

Mtl Lourdes CahuichMtl Lourdes Cahuich 88

Page 9: 2 3 5 Patron De DiseñO Singular (Singleton)

Mtl Lourdes CahuichMtl Lourdes Cahuich 99

En la línea 36, la clase define un método En la línea 36, la clase define un método estático llamado estático llamado getSingletonInstancegetSingletonInstance que regresa que regresa una referencia a la única instancia una referencia a la única instancia de de ICarnegieInfoICarnegieInfo. .

a primera llamada al método a primera llamada al método getSingletonInstancegetSingletonInstance crea la única crea la única instancia.instancia.

Page 10: 2 3 5 Patron De DiseñO Singular (Singleton)

Mtl Lourdes CahuichMtl Lourdes Cahuich 1010

ConsecuenciasConsecuencias

El patrón de diseño Singular tiene los siguientes El patrón de diseño Singular tiene los siguientes beneficios:beneficios: Una clase Singular puede controlar cómo y cuando el Una clase Singular puede controlar cómo y cuando el

código cliente puede acceder a la única instancia.código cliente puede acceder a la única instancia.• El código cliente no tiene la libertad de utilizar el operador El código cliente no tiene la libertad de utilizar el operador newnew para crear una instancia de la clase Singular. para crear una instancia de la clase Singular.

• En vez de eso, debe llamar a un método estático que En vez de eso, debe llamar a un método estático que regresa una referencia a la instancia única.regresa una referencia a la instancia única.

Una clase Singular puede ser modificada fácilmente Una clase Singular puede ser modificada fácilmente si los requerimientos cambian y la aplicación necesita si los requerimientos cambian y la aplicación necesita limitar el número de instancias a un número diferente limitar el número de instancias a un número diferente de uno.de uno.