Composite
Architecture 🟡 MidDefinition
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.