Utilisation de Flyweight Pattern dans une application basée sur une base de données

StackOverflow https://stackoverflow.com/questions/1818425

  •  10-07-2019
  •  | 
  •  

Question

Quelqu'un peut-il me donner un exemple de situation dans une application basée sur une base de données dans laquelle je devrais utiliser le modèle Flyweight?

Comment puis-je savoir que je devrais utiliser le modèle poids mouche à un moment donné de mon application?

J'ai appris le modèle de poids mouche. Mais je ne suis pas capable de comprendre un emplacement approprié dans mes applications métier basées sur une base de données pour l'utiliser.

Était-ce utile?

La solution

Sauf dans le cas d'une application de base de données très spécialisée, votre poids pourrait être utilisé par votre application, mais probablement pas pour toute classe représentant une entité persistante dans votre base de données. . Flyweight est utilisé lorsqu'il peut être nécessaire de recourir à autant d'instanciations d'une classe que si vous en instanciez une à chaque fois que vous en avez besoin, les performances en souffrent. Au lieu de cela, vous en instanciez un nombre beaucoup plus petit et les réutilisiez pour chaque instance requise en modifiant simplement les valeurs de données pour chaque utilisation. Cela serait utile dans une situation où, par exemple, vous pourriez avoir à instancier des milliers de ces classes à la seconde, ce qui n’est généralement pas le cas pour les entités persistantes dans une base de données.

Autres conseils

Vous devez appliquer n’importe quel modèle qui se présente naturellement comme solution à un problème concret - ne cherchez pas d’endroits dans votre application où vous pouvez appliquer un modèle donné.

L'objectif de Flyweight étant de résoudre les problèmes de mémoire, il est donc logique de l'appliquer une fois que vous avez profilé une application et déterminé que vous avez une tonne d'instances identiques.

Couleurs et Les pinceaux de la bibliothèque de classes de base viennent à l'esprit à titre d'exemple. .

Un aspect très important de Flyweight étant que l'implémentation partagée est immuable, de bons candidats dans une application pilotée par les données seraient ce que La conception pilotée par le domaine est appelée objet de valeur . Toutefois, cela ne devient pertinent que si vous avez beaucoup de valeurs identiques.

[Ce n'est pas un type DB, donc c'est ma meilleure hypothèse]

Le véritable avantage du modèle poids mouche est que vous pouvez réutiliser les données si vous en avez besoin; Un autre exemple est le traitement de texte où, idéalement, vous auriez un objet par "caractère". dans votre document, mais cela prend trop de mémoire, la mémoire flyweight ne vous permet de stocker qu’une seule de chaque valeur unique dont vous avez besoin.

Une deuxième (et peut-être la plus simple) façon de voir les choses est comme la mise en commun d'objets, sauf que vous mettez en commun un "par champ". niveau par opposition à un "par objet" niveau.

En fait, maintenant que j'y réfléchis, l'utilisation d'un petit bloc de mémoire (relativement petit) en c (++) est très similaire. Stockez des données brutes que vous manipulez avec un pointeur pour en extraire des éléments.

[ Voir cet article de la Wikipédia ].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top