Clasificación:
Patrón Estructural.
Propósito:
Intención:
Motivación:
Aplicabilidad:
- 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 mayor parte del estado del objeto puede ser extrínseco.
Estructura:
Los participantes:
- Flyweight:
Declaran una interface a través de la que flyweights pueden recibir y actuar sobre 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 intrínseco; es decir, debe ser independiente de su contexto.
- UnsharedConcreteFlyweight:
No todas las subclases de Flyweight tienen por qué ser compartidas. La interfaz Flyweight permite que se comparta; no lo fuerza. Es común que los objetos de esta clase tengan hijos de la clase ConcreteFlyweight en algún 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.
- Client:
Contiene referencias a los flyweights, calculando o almacenando los estados no compartidos de los flyweights.
Colaboraciones:
Consecuencias:
Reduce el número total de objetos
Desventajas:
Consume un poco mas de tiempo para realizar las busquedas.
Implementación:
Usos conocidos:
Patrones relacionados:
Referencias:
DesIgn Patterns: Elements of Reusable Object-Oriented Software Gamma, Helm, Johnson, Vlissides Editorial Addison-Wesley.
www.ldc.usb.ve/~mgoncalves/IS2/sd07/grupo5.ppt
Oye mi amiga me hace falta este código para la tarea, lo habrás terminado ya? es que dice en construcción
ResponderEliminar