domingo, 10 de mayo de 2009
Flyweight

Flyweight define el mecanismo por el cual se puede evitar crear un gran número de estados de objeto para representar a un sistema. Ya que permite compartir estados para soportar un gran número de objetos pequeños aumentando la eficiencia en espacio.

Para conseguir esto se utilizan objetos que almacenan los estados compartidos y que pueden ser usados por varios objetos simultáneamente.

Características generales de este patrón:

Nombre:

Flyweight.

Propósito:

Uso compartido de apoyo a un gran número de objetos de grano fino de manera eficiente.

Aplicabilidad:

Este patrón se utiliza generalmente cuando:

· Se utiliza un gran número de objetos.

· El coste de almacenamiento es alto debido a la cantidad de objetos.

· La mayoría de los estados de los objetos pueden ser creados como comunes.

· Muchos objetos pueden ser reemplazados por unos pocos una vez que han sido borrados los estados no comunes.

· La aplicación no depende de la identidad de los objetos.

Estructura:

Participantes:

· FlyweightFactory: Esta fábrica es responsable de crear y administrar los Flyweights. Facilitar el acceso a la creacion de flyweight a través de la fábrica garantizando una compartición apropiada. La fábrica puede crear todos los flyweights en el inicio de la aplicación, o esperar hasta que sea necesario.

· Flyweight: La interfaz define los métodos que los clientes pueden utilizar para transmitir en el exterior del estado de los objetos flyweight.

· ConcreteFlyweight: Esta interfaz implementa flyweight, e implementa la capacidad de almacenar datos internos. Los datos internos tienen que ser representativos de todos los casos cuando se necesita flyweight.

· UnsharedConcreteFlyweight: No todas las subclases flyweight necesitan ser compartidas. La interfaz flyweight permite compartirla, pero no imponerla. Es común que los objetos UnsharedConcreteFlyweight tengan objetos ConcreteFlyweight como los hijos en algun nivel en la estructura de objetos de flyweight.

· Cliente: El cliente es responsable de crear y proporcionar el contexto para los flyweights. La única manera de obtener una referencia a un flyweight es a través de FlyweightFactory.

Consecuencias:

· Genera ahorro en el almacenamiento.

· Reduce el número total de objetos.

· Consume más tiempo para realizar las búsquedas.

Patrones relacionados:

· Abstract Factory.

· Composite.

· State.

· Strategy.

Etiquetas: , ,

 
posted by Camilo Mojica at 16:40 | Permalink |


0 Comments: