« Patrons de conception/Poids-mouche » : différence entre les versions
Contenu supprimé Contenu ajouté
m 25 versions depuis w:Poids-mouche (patron de conception) : Patrons de conception/Poids-mouche |
+ |
||
Ligne 1 :
<noinclude>{{Patrons de conception}}
{{Patron de conception|Poids-mouche|Flyweight|Réduire le nombre d'objets à instancier}}</noinclude>
Lorsque de nombreux (petits) objets doivent être manipulés, mais qu'il serait trop coûteux en mémoire s'il fallait instancier tous ces objets, il est judicieux d'implémenter le poids-mouche.
Dans le cas d'une classe représentant des données, il est parfois possible de réduire le nombre d'objets à instancier si tous ces objets sont semblables et se différencient sur quelques paramètres.
Si ces quelques paramètres peuvent être extraits de la classe et les passer ensuite via des paramètres des méthodes, on peut réduire grandement le nombre d'objets à instancier. Le patron poids-mouche est l'approche pour utiliser de telles classes.
D'une part la classe avec ses données internes qui la rendent unique, et d'autre part les données externes passées à la classe en tant qu'arguments.
Ce modèle est très pratique pour des petites classes très simples.
Par exemple pour représenter des caractères ou des icônes à l'écran, ce type de patron de conception est apprécié.
Ainsi, chaque caractère peut être représenté par une instance d'une classe contenant sa police, sa taille, etc. La position des caractères à afficher est stockée en dehors de cette classe.
Ainsi, on a une et une seule instance de la classe par caractère et non une instance par caractère affiché à l'écran.
Dans le patron poids-mouche, les données n'ont pas de
À la place, les routines sont appelées directement. Un exemple classique du patron poids-mouche : les caractères manipulés dans un
Chaque caractère correspond à un objet ayant une police de caractères, une taille de caractères, et d'autres données de formatage. Un long document contient beaucoup de caractères ainsi == Exemple ==
[[Catégorie:Patron de conception]]▼
|