miércoles, 27 de mayo de 2009

Flyweight

Propósito
Minimizar la cantidad de objetos detallados que poseen un bajo nivel en un sistema por medio de la cooperación de objetos.
Aplicabilidad
Use el patrón Adapter cuando se necesita diferenciar los objetos similares en su estado original para un grupo de clases y solo es posible saber en tiempo de ejecución que clases será utilizada, cuando la aplicación hace uso de diversos objetos semejantes, cuando los conjuntos de objetos parecidos pueden ser sustituidos por un objeto compartido una vez las piezas diferentes del estado ya se han descartado, cuando las partes diferentes se pueden aislar de las partes análogas en los objetos relacionados para facilitar la cooperación de esas piezas.
Implementación
El patrón Adapter necesita de los siguientes elementos:
•    Flyweight: Interfaz que define los métodos que pueden ser utilizados por los clientes para pasar el estado externo a los objetos flyweight.
•    ConcreteFlyweight: Implementa la interfaz Flyweight y tiene la capacidad de almacenar datos internos.
•    FlyweightFactory: La fabrica es el responsable de crear y manejar los objetos Flyweight.
•    Cliente: El cliente es el responsable de crear y proporcionar el contexto para los objetos Flyweight. La forma de obtener una referencia a un objeto Flyweight es por medio es por medio de FlyweightFactory.
Ventajas e Inconvenientes
Se reduce la cantidad de objetos que se deben gestionar, ahorrando mucho espacio en memoria.
Se economiza más espacio aún si la información de contexto de los objetos se computa en vez de tenerla almacenada, pero, eso nos produce el problema puntual de este patrón: El costo en el período de ejecución.
Patrones Relacionados
•    Abstract Factory: Se recurre a este patrón para hacer más dinámico el acceso a los objetos Flyweight.
•    Composite: Se suele utilizar este patrón para proporcionar la estructura.
•    State: Comúnmente se hace uso de Flyweight para implementar el patrón State.

No hay comentarios:

Publicar un comentario