Flyweight
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Según el libro "Patrones de Diseño" el patrón Flyweight "usa comportamiento para permitir un gran número de objetos de grano fino de forma eficiente".
Flyweight:
declara una interfaz a través de la cual los flyweight concretos pueden recibir un estado extrínseco y actuar sobre él.
FlyweightConcreto:
implementa la interfaz Flyweight y permite almacenar el estado intrínseco, en caso de que lo haya. Una variable FlyweightConcreto debe poder ser compartida, por lo que cualquier estado que almacene debe ser intrínseco, esto es, debe ser independiente del contexto de la variable FlyweightConcreto.
FlyweightConcretoNoCompartido:
no todas los subtipos de datos de Flyweight necesitan ser compartidas. La interfaz Flyweight permite el comportamiento, no fuerza a él. Las variables FlyweightConcretoNoCompartido suelen tener variables FlyweightConcreto como hijos en algún nivel de la jerarquía de variables.
FabricaFlyweight:
crea y controla variables flyweight.
garantiza que los flyweight se compartan de manera adecuada. Cuando un cliente solicita un flyweight, la variable FabricaFlyweight proporciona una variable concreta o crea una nueva, en caso de que no exista ninguna.
Cliente:
mantiene una referencia a los flyweight.
calcula o guarda el estado extrínseco de los flyweight.
No se observan impedimentos y/o modificaciones de la estructura original del patrón para su implementación en Go.
En este ejemplo queremos que nuestro sistema sea capaz de dibujar controles en la pantalla haciendo un uso eficiente de los recursos, ya que existen controles (los botones) que pueden ser reutilizados.
Implementación:
Se puede probar la implementación del patrón de la siguiente forma:
|
Atención: Esta publicación se encuentra abandonada. Puede acceder a la versión vigente en