Patrones Estructurales_Flyweight

Patrón Flyweight

Sirve para eliminar o reducir la redundancia cuando tenemos gran cantidad de objetos que contienen información idéntica, además de lograr un equilibrio entre flexibilidad y rendimiento (uso de recursos). Se le conoce como patrón peso ligero o patrón peso mosca.

Aplicabilidad
  • Una aplicación utiliza un gran número de objetos.
  • Los costes de almacenamiento son elevados.
  • La mayor parte del estado del objeto se puede hacer extrínseco.
  • Muchos objetos se pueden representar por pocos.
  • La aplicación no depende de la identidad de los objetos
Estructura
Participantes
  • FlyweightFactory: fábrica responsable de crear y administrar los Flyweights. Facilita el acceso a la creación 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 algún 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

Ventajas: Reduce en gran cantidad el peso de los datos en un servidor. (Disminuyen requisitos de almacenamiento).
Desventaja: Aumenta tiempo de ejecución con la transferencia, búsqueda.

Patrones relacionados
  • Abstract Factory.
  • Composite.
  • State.
  • Strategy.

No hay comentarios:

Publicar un comentario