Flyweight
Architecture 🔴 SeniorDéfinition
Partage efficacement des objets a grain fin pour économiser la mémoire. Sépare l'état intrinsèque (partage) de l'état extrinsèque (contextuel).
Analogie
Les caractères d'imprimerie : chaque lettre 'A' utilise le même bloc métallique, seule la position sur la page change.
Exemple de code
const icons = new Map();
function getIcon(name) {
if (!icons.has(name)) icons.set(name, loadIcon(name));
return icons.get(name);
}
Cas d'usage
Rendu de milliers d'éléments similaires (arbres dans un jeu, caractères dans un éditeur).
Anti-pattern
Créer une nouvelle instance pour chaque élément alors que 90% de l'état est identique.