Pregunta

¿Puede alguien darme algún ejemplo de situación en una aplicación basada en una base de datos donde debería usar el patrón Flyweight?

¿Cómo puedo saber que debo usar el patrón de peso mosca en un punto de mi solicitud?

He aprendido el patrón de peso mosca. Pero no puedo entender un lugar apropiado en mis aplicaciones comerciales basadas en bases de datos para usarlo.

¿Fue útil?

Solución

Excepto para una aplicación de base de datos muy especializada, el Flyweight might será utilizado por su aplicación, pero probablemente no para ninguna clase que represente una entidad que persiste en su base de datos . Flyweight se usa cuando de lo contrario podría haber una necesidad de tantas instancias de una clase que si crea una instancia cada vez que lo necesite, el rendimiento se vería afectado. Entonces, en su lugar, crea una instancia de un número mucho menor de ellos y los reutiliza para cada instancia requerida simplemente cambiando los valores de datos para cada uso. Esto sería útil en una situación en la que, por ejemplo, podría tener que crear instancias de miles de tales clases cada segundo, que generalmente no es el caso para las entidades que persisten en una base de datos.

Otros consejos

Debe aplicar cualquier patrón cuando se sugiera naturalmente como una solución a un problema concreto, no busque lugares en su aplicación donde pueda aplicar un patrón dado.

El propósito de Flyweight es abordar los problemas de memoria, por lo que solo tiene sentido aplicarlo después de haber perfilado una aplicación y determinado que tiene un montón de instancias idénticas.

Colores y Pinceles de la Biblioteca de clases base vienen a la mente como ejemplos .

Dado que una parte muy importante de Flyweight es que la implementación compartida es inmutable, los buenos candidatos en una aplicación basada en datos serían lo que Diseño controlado por dominio se refiere a Objetos de valor , pero solo se vuelve relevante si tiene muchos valores idénticos.

[No soy un tipo DB, así que esta es mi mejor suposición]

La verdadera ventaja del patrón de peso mosca es que puede reutilizar datos si lo necesita; Otro ejemplo es el procesamiento de textos, donde idealmente tendría un objeto por "carácter". en su documento, pero eso consumiría demasiada memoria, por lo que la memoria de peso mosca solo le permite almacenar uno de cada valor único que necesita.

Una segunda forma (y quizás la más simple) de verlo es como la agrupación de objetos, solo que se está agrupando en un " por campo " nivel en lugar de un " por objeto " nivel.

De hecho, ahora que lo pienso, no es diferente a usar un trozo de memoria (comparativamente pequeño) en c (++), así que almacena algunos datos en bruto de los que haces la manipulación del puntero para sacar cosas.

[ Consulte este artículo de wikpedia ].

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top