Patrons de conception/Objets réutilisables

Un livre de Wikilivres.
Patron de conception
Catégorie : Autre
Nom français : Objets réutilisables
Nom anglais : Object pool
Utiliser un objet parmi un ensemble fixe d'objets réutilisable pour éviter de créer des instances.


La création d'objets peut être coûteuse en performances : allocation de l'espace mémoire, remplissage des méta attributs (classe, et autre données internes selon le langage de programmation utilisé), initialisation des attributs par les différents constructeurs utilisés (celui appelé explicitement pour la classe, celui de sa classe mère, celui de la classe mère de celle-ci, ...). Le coût augmente notamment quand beaucoup d'objets sont manipulés, ou quand un traitement est appelé très fréquemment. La destruction d'un objet coûte également en performances : appel aux destructeurs de la hiérarchie de classes, libération de la zone mémoire.

Réduire le coût en temps est important notamment lors d'opération ayant un temps limite comme l'affichage d'une interface graphique par exemple, où l'affichage doit s'effectuer rapidement afin que l'utilisateur ne voit pas un état transitoire (écran blanc ou noir) ou une fenêtre figée.

Ce patron permet d'économiser les temps d'instanciation et de suppression lorsque de nombreux objets ont une courte durée d'utilisation. Il consiste à administrer une collection d'objets qui peuvent être recyclés.

Une méthode de l'objet de gestion des objets réutilisables permet d'obtenir un objet soit par une nouvelle instanciation, soit par recyclage d'un objet périmé. Lorsque les objets arrivent à la fin de leur cycle de vie, ils sont remis à la disposition du Pool pour un futur recyclage. Dans la phase d'instanciation, le Pool peut instancier plus d'un objet à la fois si l'algorithme d'instanciation a une complexité meilleure que O(n).

Ce patron est particulièrement utile lorsque le nombre total de cycles de vie est très grand devant le nombre d'instances à un moment précis et que les opérations d'instanciation et/ou suppression sont coûteuses en temps d'exécution par rapport à leur recyclage.