El patró Composite és un patró compost que descriu un grup d'objectes, que s'ha de fer servir amb una sola instància d'objecte. La intenció d'un Composite és “compondre” objectes en estructures d'arbre. Implementar el patró Composite permet als clients tractar de manera uniforme els objectes individuals i els objectes compostos.
Hi ha moments en els que un programa necessita manipular una estructura de dades d'arbre. Penseu, per exemple, un programa per a gestionar un sistema d'arxius. Un sistema de fitxers és una estructura d'arbre que conté branques que són les carpetes, així com els nodes fulla que són els arxius. Tingueu en compte que un objecte de carpeta en general conté un o més objectes arxiu o carpeta i per tant és un objecte complex, per tant un objecte arxiu és un objecte simple. També heu de tenir en compte que els arxius I carpetes tenen moltes operaions i atributs en comú, com per exemple moure i copiar un arxiu o carpeta, el nom de fitxer, la mida, per tant és convenient tractar els arxius i carpetes de manera uniforme mitjançant la definició d'un arxiu d'interficie.
En aquesta figura es mostra un diagrama de classes del patró composite
- Component: És la classe abstracta de Leaf i Composite. Defineix la interfície que ha de ser implementada per Leaf i Composite
- Leaf: Són els objectes que no tenen fills. Implementen serveis descrits pel Component.
- Composite: Podra contenir més fills. És la superclasse que defineix els mètodes també permet la implementacio de nous.
- Client: Manipula els objectes utilitzant la interficie Component.