Flyweight

Architecture 🔴 Senior

Definition

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