Le poids mouche est un patron de conception structurel qui permet à des programmes de limiter leur consommation de mémoire malgré un très grand nombre d’objets.
Ce patron est obtenu en partageant des parties de l’état d’un objet à plusieurs autres objets. En d’autres termes, le poids mouche économise de la RAM en mettant en cache les données identiques chez différents objets.
Exemples d’utilisation : Le poids mouche n’a qu’une seule utilité : minimiser la consommation de mémoire. Si votre programme ne rencontre aucun problème de RAM, ignorez ce patron pour le moment.
Voici quelques exemples tirés des bibliothèques principales de Java :
Identification : Le poids mouche peut être reconnu par une méthode de création qui renvoie des objets du cache plutôt que d’en créer de nouveaux.
Afficher une forêt
Dans cet exemple, nous allons procéder à l’affichage d’une forêt (1 000 000 d’arbres) ! Chaque arbre sera représenté par son propre objet avec un certain état (coordonnées, texture, etc.). Même si le programme remplit bien son rôle, il consomme naturellement énormément de RAM.
La raison est simple : de trop nombreux objets Arbre contiennent des données dupliquées (nom, texture, couleur). Nous pouvons lui appliquer le poids mouche afin de stocker ces valeurs dans des objets poids mouche séparés (la classe TypeArbre). Plutôt que de stocker les mêmes données des milliers de fois dans des objets Arbre, nous allons référencer un objet poids mouche avec certaines valeurs.
Le code client ne s’en rendra même pas compte puisque la complexité de la réutilisation des objets poids mouche est cachée à l’intérieur d’une fabrique de poids mouches.
trees
trees/Tree.java: Contient un état unique pour chaque arbre
trees/TreeType.java: Contient un état partagé entre plusieurs arbres
trees/TreeFactory.java: Encapsule la complexité de la création de poids mouches
forest
forest/Forest.java: La forêt que nous dessinons
Demo.java: Code client
OutputDemo.png: Impression d’écran
OutputDemo.txt: Statistiques d’utilisation de la RAM