2012-02-17 7 views

Respuesta

26

Una diferencia en los contrapesos son instancias comúnmente inmutables, mientras que los recursos adquiridos de la agrupación generalmente son mutables.

Así que crea sobrepesas para evitar el costo de crear repetidamente múltiples instancias de objetos que contienen el mismo estado (porque son todos iguales, solo crea uno y lo vuelve a usar en todos los lugares de su aplicación), mientras que los recursos de un grupo son recursos particulares que desea controlar individualmente y posiblemente tienen un estado diferente, pero no desea pagar el costo de creación y destrucción porque todos se inicializan en el mismo estado.

+1

¡La mejor respuesta! Creo que Flyweight se usa generalmente para minimizar el volumen de la memoria, ya que contiene solo elementos únicos. El grupo de objetos permite mejorar el rendimiento pero conduce a un alto consumo de memoria. – Warlock

+1

Hasta cierto punto, creo que el patrón de peso mosca también almacena algo en caché. Si el único peso mosca inmutable ocupa demasiada memoria, es difícil decir el ahorro de memoria. Puedes decir que es mejor que crear estos objetos inmutables una y otra vez. – Chao

5

Al menos dos grandes diferencias vienen a la mente:

  • Una agrupación de objetos es un contenedor para un conjunto de objetos de dominio, mientras que una mosca generalmente es un objeto de dominio.
  • Un grupo de objetos generalmente contiene un conjunto de objetos similares que se pueden compartir al mismo tiempo, como conexiones de bases de datos, mientras que normalmente hay un conjunto de diferentes objetos flyweight, cada uno representa un estado diferente.
1

Este sitio describe ambos patrones con ejemplos específicos. Hace un buen trabajo clarificando la diferencia y apoya la respuesta de Gabriel anterior. http://www.oodesign.com/

Cuestiones relacionadas