Patrón flyweight

Solo disponible en BuenasTareas
  • Páginas : 4 (868 palabras )
  • Descarga(s) : 0
  • Publicado : 26 de noviembre de 2010
Leer documento completo
Vista previa del texto
Flyweight
Propósito
Compartir el uso de una gran cantidad de objetos que compartan algún contenido intrínseco e invariable, para reducir el consumo de recursos y aumentar la eficiencia.
Tambiénconocido como
N/A
Motivación
En ciertas ocasiones se requiere del uso de una gran cantidad (cientos o miles) de objetos similares. Esto ocasiona un alto consumo de memoria y el acceso yadministración de estos objetos se vuelve complicado.
El ejemplo de uso más común de este patrón es un editor de texto. Si se representa cada carácter como un objeto, en seguida se puede apreciar que porpequeño que sea un documento la cantidad de objetos a instanciar es demasiado grande.
El patrón flyweight describe como compartir estos objetos sin incurrir en el uso de tantos recursos.
Problema
Sedesea reducir al mínimo posible el consumo de recursos que origina la necesidad de manejar una gran cantidad de objetos similares que comparten cierta porción de información.
Consideraciones
• Reducirel coste de recursos necesarios para administrar una gran cantidad de objetos similares.
Solución
El flyweight es un objeto compartido que puede ser utilizado en multiples contextossimultáneamente. La clave de este patrón es distinguir entre la información intrínseca y externa. El estado intrínsico se almacena en el flyweight, este consiste en la información que no depende del contexto en elcual se utilice el objeto, permitiendo de esta manera que pueda ser compartido. El estado externo depende del contexto de utilización del objeto y por lo tanto no puede ser compartido. El cliente es elresponsable de pasarle el estado externo al flyweight cuando este lo requiera.
Participantes
• Flyweight: Define la interfaz a través de la cual los flyweight ejecutan acciones recibiendo comoparámetro el estado externo.
• ConcreteFlyweight: Implementa Flyweight y almacena el estado intrínseco. El ConcreteFlyweight debe poder compartirse.
• UnsharedConcreteFlyweight: Implementa la...
tracking img