Patron Flyweight

Introduccion:

usa el compartimiento para permitir un gran numero de objetos de grano fino de forma eficiente.

Nombre del Patron:
Flyweight (Peso Ligero).

Clasificacion del Patron:
Estructural.

Intencion:

Reducir el numero de objetos detallados de muy bajo nivel en un sistema mediante la comparticion de objetos.

Motivacion:

  1. Los caracteres de un procesador de palabras podrian ser objetos.
  2. La cantidad de caracteres en un documento puede ser muy grande.
  3. Cada caracter es compartido por los objetos que lo contienen.
Estructura:



Participantes:

Flyweight: Declara una interfaz a traves de la cual los 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 intrinseco; es decir, debe ser independiente de su contexto.

UnsharedConcreteFlyweight: No todas las subclases de Flyweight tienen por que ser compartidas. La interfaz Flyweight permite que se comparta; no lo fuerza. Es comun que los objetos de esta clase tengan hijos de la clase ConcreteFlyweight en algun nivel de su estructura.

FlyweightFactory: Crea y gestiona a los objetos flyweight. Garantiza que los objetos flyweight se compartan 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. Calcula o almacena los estados no compartidos de los flyweights.

No hay comentarios:

Publicar un comentario

Hora Bogotá Colombia