Vous êtes sur la page 1sur 13

Patron Flyweight

Patron Flyweight
Nombre
Peso ligero

Nombre Alternativo
Patrn estructural (determina como combinar objetos y clases para definir estructuras complejas).

Patron Flyweight
Proposito
Compartir estados para soportar un gran nmero de objetos pequeos aumentando la eficiencia en espacio. El patrn Flyweight sirve para eliminar o reducir la redundancia cuando tenemos gran cantidad de objetos que contienen informacin idntica.

Patron Flyweight
Motivacion
El patrn flyweight describe como almacenar un gran nmero de objetos sin un gran coste. Para conseguir esto se utilizan objetos que almacenan los estados compartidos y que pueden ser usados por varios objetos simultneamente.

Patron Flyweight
Estructura

Patron Flyweight
Aplicabilidad
Se debe aplicar este patrn cuando se cumplen todas estas caractersticas:
Se utiliza un gran nmero de objetos El coste de almacenamiento es alto debido a la cantidad de objetos La mayora 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 mayor parte del estado del objeto puede ser extrnseco

Patron Flyweight
Participantes
Flyweight Declara una interfaz a travs de la cual los flyweights pueden recibir y actuar sobre los estados no compartidos. ConcreteFlyweight Implementa la interfaz Flyweight y almacena los estados compartidos, si los hay. Un objeto ConcreteFlyweight debe ser compartible. Cualquier estado que almacene debe ser intrnseco; es decir, debe ser independiente de su contexto.

Patron Flyweight
Participantes (Continuacion)
UnsharedConcreteFlyweight No todas las subclases de Flyweight tienen por qu ser compartidas. La interfaz Flyweight permite que se comparta; no lo fuerza. Es comn que los objetos de esta clase tengan hijos de la clase ConcreteFlyweight en algn nivel de su estructura. FlyweightFactory Crea y gestiona los objetos flyweight. Garantiza que los objetos flyweight se comparten de forma apropiada. Cuando un cliente solicita un flyweight, el objeto de la clase FlyweightFactory proporciona una instancia existente, o crea una.

Patron Flyweight
Participantes (Continuacion)
Client Contiene referencias a los flyweights. Calcula o almacena los estados no compartidos de los flyweights.

Patron Flyweight
Consecuencias Ventajas:
1. Produce ahorro de la capacidad almacenamiento

2. Reduce el nmero total de objetos


1. Reduce en gran cantidad el peso de los datos en un servidor .

Desventajas:
1. Consume un poco mas de tiempo para realizar las busquedas

Patron Flyweight
Colaboraciones
Los clientes no crean directamente los objetos Flyweight, sino que deben invocar las fbricas El estado extrnseco es mantenido por el cliente y pasado cuando se invocan mtodos que lo requieren.
o El primer uso que se le dio al patrn fue en un poderoso editor de texto, de inter-views, llamado Doc. o Et++ usa flyweight para soportar diferen-tes apariencias (look and feel).

Usos conocidos

Patron Flyweight
Implementacin
o Eliminar estados extrnsecos. El patrn depende ampliamente de identificar estados extrnsecos y removerlos de los objetos compartidos. Los estados extrnsecos, por su parte deben ser calcula-dos, en alguna parte donde los requerimientos de memoria sean bajos. o Debido a que los flyweight son compartidos, no deberan ser instanciados directamente por los clientes. La clase FlyweightFactory deja a los clientes localizar un flyweight en particular.

Patron Flyweight
Codigo Ejemplo
Archivo

Patrones relacionados
AbstractFactory: El Flyweight factory es un Abstactfactory. Como se menciono anteriormente, Com-posite es combinado con este patrn pa-ra representar las jerarquas de herencia como un rbol con nodos y hojas que hacen el papel de objetos compartidos. Comnmente es conveniente implemen-tar State y Strtegy son immolementados con Flyweight.

Vous aimerez peut-être aussi