Flyweight
Architecture 🔴 SeniorDefinition
Partage efficacement des objets a grain fin pour economiser la memoire. Separe l'etat intrinseque (partage) de l'etat extrinseque (contextuel).
Analogie
Les caracteres d'imprimerie : chaque lettre 'A' utilise le meme bloc metallique, 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'elements similaires (arbres dans un jeu, caracteres dans un editeur).
Anti-pattern
Creer une nouvelle instance pour chaque element alors que 90% de l'etat est identique.