Composite

Architecture 🟡 Mid

Definition

Compose des objets en structures arborescentes pour representer des hierarchies partie-tout. Les clients traitent uniformement objets simples et composes.

Analogie

Un dossier de fichiers : un dossier peut contenir des fichiers ou d'autres dossiers, et on peut tous les supprimer de la meme facon.

Exemple de code

class Folder {
  children = [];
  add(child) { this.children.push(child); }
  getSize() {
    return this.children.reduce((s, c) => s + c.getSize(), 0);
  }
}

Cas d'usage

Menus imbriques, arbres DOM, systemes de fichiers, organigrammes.

Anti-pattern

Traiter differemment feuilles et noeuds partout dans le code client.
#architecture#interview#gof#structural