patrón de peso mosca


En la programación de computadoras , el patrón de diseño de software de peso ligero se refiere a un objeto que minimiza el uso de la memoria al compartir algunos de sus datos con otros objetos similares. El patrón de peso mosca es uno de los veintitrés patrones de diseño GoF conocidos . [1] Estos patrones promueven el diseño flexible de software orientado a objetos, que es más fácil de implementar, cambiar, probar y reutilizar.

El término fue acuñado por primera vez, y la idea fue ampliamente explorada, por Paul Calder y Mark Linton en 1990 [2] para manejar eficientemente la información de glifos en un editor de documentos WYSIWYG . [3] Sin embargo, ya se utilizaban técnicas similares en otros sistemas desde 1988. [4]

El patrón de peso ligero es útil cuando se trata de una gran cantidad de objetos con elementos repetidos simples que usarían una gran cantidad de memoria si se almacenaran individualmente. Es común mantener datos compartidos en estructuras de datos externas y pasarlos a los objetos temporalmente cuando se usan.

Un ejemplo clásico son las estructuras de datos que se utilizan para representar caracteres en un procesador de textos . Ingenuamente, cada carácter de un documento puede tener un objeto de glifo que contenga su contorno de fuente, medidas de fuente y otros datos de formato. Sin embargo, esto usaría cientos o miles de bytes de memoria para cada carácter. En cambio, cada carácter puede tener una referencia a un objeto de glifo compartido por cada instancia del mismo carácter en el documento. De esta manera, solo la posición de cada carácter debe almacenarse internamente.

Los clientes pueden reutilizar Flyweightobjetos y pasarlos en estado extrínseco según sea necesario, reduciendo la cantidad de objetos creados físicamente.

Hay varias formas de implementar el patrón de peso mosca. Un ejemplo es la mutabilidad: si los objetos que almacenan el estado de peso mosca extrínseco pueden cambiar.


Una captura de pantalla del paquete Writer de LibreOffice.
Los editores de texto, como LibreOffice Writer , suelen utilizar el patrón flyweight.
Un ejemplo de clase UML y diagrama de secuencia para el patrón de diseño Flyweight. [6]