Aujourd'hui je vous propose de parler Design Pattern, et plus particulièrement d'un pattern intéressant à mettre en place quand on cherche à alléger (en mémoire) une application : le pattern Flyweight (poid mouche).
l'application doit manipuler de très nombreuses Entités (des produits pour une boutique par exemple), et chaque Entité est représentée par un Objet. L'instanciation de tous ces objets est très gourmande en mémoire :
On voit le problème : pour chaque ligne récupérée, un objet est instancié, donc est créé, chargé en mémoire... c'est lent et coûteux.
Il suffit de n'instancier qu'une seule fois l'objet en question, et de l'hydrater au fur et à mesure du besoin :
Ce qui dans notre cas pourrait donner par exemple cette classe :
Les performances sont dans ce cas meilleures, et l'utilisation mémoire est plus réduite.
Ce type de pattern n'est pas forcément adapté dans toutes les situations, on l'utilise :
Et vous, avez-vous déjà utilisé ce pattern ? Quel est votre retour d'expérience ?
© Jean-François Lépine, 2013 - 2024