Umožní pracovať so stromom objektov rovnako ako s jediným objektom.
class Polozka { velkost() { throw new Error('abstraktná metóda'); }} class Subor extends Polozka { constructor(bajtov) { super(); this.bajtov = bajtov; } velkost() { return this.bajtov; }} class Priecinok extends Polozka { deti = []; pridaj(polozka) { this.deti.push(polozka); } velkost() { let spolu = 0; for (const dieta of this.deti) { spolu += dieta.velkost(); } return spolu; }} const album = new Priecinok();album.pridaj(new Subor(900)); const koren = new Priecinok();koren.pridaj(new Subor(120));koren.pridaj(album); koren.velkost(); // 1020 — klient sa nepýtal, čo je vnútri