2. FLYWEIGHT
◻ Los programas que aplican este sistema
tienen comúnmente un tipo de componente
que se repite numerosas veces, y las
instancias tienen una serie de carasteristicas
en común. En este caso el patrón busca
optimizar el tamaño en memoria que
ocupan los objetos para sacar el máximo
partido al sistema y no desaprovechar los
recursos con datos redundantes.
3. ESTRUCTURA
◻ INTRINSECAS
◻ Hacen referencia los estados comunes que
tiene el objeto o grupo de objetos a replicar.
◻ El objetivo de este patrón es
estudiar las características
comunes de los objetos y crear
una clase extrínseca.
◻ Luego a la hora de realizar las
diferentes instancias, usa la
parte común(intrínseca) y la
complementa con los datos
específicos de la instancia.
◻ EXTRINSECAS
◻ Aluden a las características propias de
la instancia.
4. Flyweight: Contiene la parte del estado del
objeto original que pueden compartir varios
objetos. El mismo objeto Flyweight puede
utilizarse en muchos contextos diferentes.
Contexto: contiene el estado extrínseco, único
en todos los objetos originales. Cuando un
contexto se empareja con uno de los objetos
flyweight, representa el estado completo del
objeto original.
Quien invoque un método del objeto flyweight
debe también pasar las partes adecuadas del
estado extrínseco dentro de los parámetros del
método. Por otra parte, el comportamiento se
puede mover a contexto.
Cliente: Calcula o almacena el estado extrínseco
de los objetos Flyweight. Para el cliente un
Flyweight es un objeto plantilla que puede cambiar
durante la ejecución pasando información
contextual de los parámetros de sus métodos.
Flyweight Factory: Gestiona un grupo de
flyweights existentes, los clientes no crean los
objetos directamente. Invocan a la fábrica,
pasandoles partes del estado intrínseco del
Flyweight deseado. Revisa y devuelve existentes
y crea nuevos de ser necesario
1
2
3
4
5
6
ESTRUCTURA -
DEFINICIONES
5. VENTAJAS
◻ Menos uso de memoria derivado
de la reutilización de objetos ya
existentes que comparten
mismos estados intrínsecos.
6. DESVENTAJAS
◻ En algunos casos, al mover el
estado afuera del objeto puede
quebrar la encapsulación y puede
ser menos eficiente para
mantener el objeto
completamente intrínseco.
Puede que estés cambiando RAM por
ciclos CPU cuando deba calcularse de
nuevo parte de la información de
contexto cada vez que alguien invoque
un método flyweight.
7. EJEMPLOS DE
USO
◻ Principalmente cuando no tenemos los
suficientes recursos para generar una gran
cantidad de objetos
◻ Como en este caso que se generan un millón de
arboles en donde crear cada uno de los objetos
que va a requerir una gran cantidad de recursos.
◻ Siendo mejor utilizar el patrón Flyweight para
disminuir el uso de estos recursos.
◻ El patrón Flyweight tiene un único propósito:
minimizar el consumo de memoria. Si tu
programa no tiene problemas de escasez de
RAM, puedes ignorar este patrón por una
temporada.
-Arboles
-Atributos
-Posición X,Y
-Color
-Textura
-Nombre