STRUCTURAL

Composite

Comporre oggetti in strutture ad albero per rappresentare gerarchie parte-tutto. Composite permette ai client di trattare uniformemente oggetti singoli e composizioni di oggetti.

Il Problema

Quando hai una struttura ad albero di oggetti e vuoi che i client trattino foglie e compositi allo stesso modo.

La Soluzione

Definire un'interfaccia comune per oggetti semplici (foglie) e contenitori (compositi). I compositi contengono collezioni di componenti e delegano operazioni a loro.

Struttura

Component interface, Leaf implementa Component, Composite contiene lista di Component e implementa operazioni delegando ai figli.

Partecipanti:
Component - interfaccia comune per oggetti nella composizione
Leaf - oggetto foglia senza figli
Composite - componente con figli, implementa comportamenti relativi ai figli
Client - manipola oggetti tramite interfaccia Component
Esempi di Codice

Composite per File System

Rappresentazione di file e cartelle in una struttura ad albero.

JAVASCRIPT
Loading...

Composite per UI Components

Componenti UI annidati (box, panel, button) che possono essere renderizzati.

JAVASCRIPT
Loading...
Esempi nel Mondo Reale
File systems - file e cartelle
UI frameworks - componenti annidati (React, Vue components)
Organization charts - dipendenti e manager
Graphic editors - forme semplici e gruppi di forme
Menu systems - menu items e sottomenu
Quando Usarlo
Quando vuoi rappresentare gerarchie parte-tutto di oggetti
Quando vuoi che i client ignorino la differenza tra composizioni e oggetti singoli
Quando la struttura può avere profondità arbitraria
Quando vuoi applicare operazioni ricorsivamente su una struttura ad albero
Quando NON Usarlo
Quando la struttura non è naturalmente ad albero
Quando foglie e compositi hanno operazioni molto diverse
Quando la complessità della gerarchia non è necessaria