Flyweight

Páginas: 9 (2142 palabras) Publicado: 10 de octubre de 2011
Taller de Aplicación de Patrones PATRONES GOF

1.

Nombre: Patrón de estructura FLYWEIGHT

2.

Propósito El propósito principal es reducir la redundancia. Utiliza el uso compartido para soportar un gran número de objetos finos eficientemente. La idea es reemplazar Widgets de gran peso mediante el uso de gadgets livianos. Flyweight permite compartir objetos ligeros, para hacer el programamás liviano. Reduce la redundancia cuando gran cantidad de objetos poseen idéntica información

3.

Sinónimo Peso ligero Peso mosca. Interning: el patrón interning es utilizado para objetos inmutables, el patrón Flyweight es una generalización de este.

4.

Motivación

“Algunas aplicaciones pueden usar objetos durante todo su diseño, pero esto puede ocasionar implementaciones costosas”.Los editores de texto, por ejemplo, usan objetos para representar elementos embebidos como tablas, figuras y caracteres con el fin de mejorar la flexibilidad. Sin embargo, para el caso de los caracteres, un texto puede tener miles de ellos con la correspondiente implicación de costo para la memoria del sistema. Flyweight permite compartir objetos ligeros que conlleven a hacer más liviana laaplicación. Los objetos pueden compartir estados intrínsecos (no dependen del contexto), mas no los extrínsecos (dependen del contexto).

Otro ejemplo de estudio; sería una aplicación en la que se requiere dibujar una serie de pelotas de igual forma, tamaño y color rebotando en el borde de una ventana. Si creamos una clase que tenga los atributos con los que se dibujaran las pelotas (radio,coordenadas y color), como las pelotas tienen iguales características, solo cambian las coordenadas. El color y radio se repetirá en cada instancia con el consecuente desperdicio de memoria. 5. Aplicabilidad Al igual que todos los patrones, su efectividad dependerá del momento y la forma de aplicarlo. Por ello, se plantean los siguientes puntos que permitirán identificar un caso en el cual sea convenientesu implementación: La aplicación usa un elevado número de objetos El costo de almacenamiento es elevado debido al creciente número de objetos involucrados. La gran mayoría de los estados de los objetos pueden hacerse extrínsecos Al separar los estados extrínsecos, muchos grupos de objetos pueden reemplazarse por unos pocos objetos compartidos (estados intrínsecos comunes o compartidos). Laaplicación no depende de la identidad de los objetos (el patrón se basa en el compartimento de objetos).

-

6.

Estructura

Figura 1. Diagrama de clases

Supongamos se desea implementar el patrón flyweight para un editor de texto. Las letras de cada línea tendrán características comunes de tipo y tamaño. El modelo seria:

Fo rm a t o Fly we ig ht Fo rm a t o Fa c t o ry + pool: F orma to()+ ge tF orma to(tipo, ta ma no) + tipo: String + ta ma no: int + ge tTipo() + ge tTa mano()

if ( e x ists formato(tipo, tama no) ) { re turn e x isting formato } e lse { cre a te ne w f orma to(tipo, ta mano) add ne w f orma to to the pool re turn the ne w f ormato }

Clie n t e

Le t ra Co nc re t a + le tra: C ha r

Figura 2. Diagrama de clases editor de texto.

7.

ParticipantesFlyweight: declara la interface para recibir e interpretar los estados extrínsecos. ConcreteFlyweight: Implementa la interfaz Flyweight y almacena estados intrínsecos, si existen. Deben ser compatibles, cualquier estado de este debe ser intrínseco. UnsharedConcreteFlyweight: no todos los Flyweight tienen que ser compartidos (se habilita el compartimiento de estados pero no la fuerza).FlyweightFactory: crea y manejo los objetos Flyweight, se asegura que sean compartidos adecuadamente. Cuando el cliente hace una petición de Flyweight, esta proporciona una instancia (ya existente o crea una nueva). Client: mantiene una referencia a Flyweight. Almacena y/o calcula los estados extrínsecos de los Flyweights.

8.

Colaboraciones

Los Flyweights están almacenados en un repositorio. El...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS