Flyweight

Architecture 🔴 Senior

Dé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.
#architecture#interview#gof#structural#performance

← → au clavier pour passer d'une fiche à l'autre