Por lo que yo sé, el conjunto de objetos es un patrón creacional y el peso mosca es un patrón estructural, pero en realidad no veo mucha diferencia entre esos dos patrones, ¿podría alguien explicarme la diferencia y cuándo podría ser cada uno? útil en una implementación?Patrones flyweight vs pool de objetos: ¿Cuándo cada uno es útil?
Respuesta
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.
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.
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/
- 1. ¿Cuándo es útil File.join?
- 2. ¿Cuándo es útil __proto__?
- 3. ConfigurationManager.AppSettings ["SettingName"] vs Properties.Settings.Default.SettingName ¿cuándo debería usar cada uno?
- 4. Pool de objetos
- 5. ¿Cuándo es útil un ConcurrentSkipListSet?
- 6. ¿Cuándo es útil la salida de repr?
- 7. Android - caché de dibujo - ¿cuándo es útil?
- 8. ¿Cuándo es útil un filtro Bloom?
- 9. Vida útil de los objetos en Java vs .Net
- 10. ¿Cuándo la evaluación perezosa no es útil?
- 11. Vida útil de los objetos temporales en C11 vs C99
- 12. Thread Pool vs Thread Spawning
- 13. Diseño patrones: Composite vs. Composición
- 14. Vida útil de objetos Qt
- 15. Reemplazando jQuery cada uno por
- 16. ¿Cuándo el @ se vuelve útil?
- 17. ¿Cuándo es útil el operador de coma escalar de Perl?
- 18. Patrones de delegados vs. observadores
- 19. ¿Es "específico para Microsoft" para cada uno?
- 20. Java: ¿Cuándo es útil un bloque de inicialización estático?
- 21. F # vs IronPython: ¿Cuándo se prefiere uno al otro?
- 22. Cuándo utilizar patrones de fábrica?
- 23. ¿Cuándo querría uno usar OneTuple?
- 24. NHibernate uno-a-uno vs 2 muchos-a-uno
- 25. ¿Programa útil para renderizar CSS en diferentes navegadores en lugar de instalar cada uno por separado?
- 26. ¿Cuándo es útil una llamada a un método parametrizado?
- 27. ¿Puede alguien explicarme cuándo es útil usar MapMaker o WeakHashMaps?
- 28. ¿Cuándo es útil la propiedad del código compartido?
- 29. ¿Cuándo es útil la diferencia entre quotRem y divMod?
- 30. E_NOTICE: ¿Cuán útil es REALMENTE reparar cada una?
¡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
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