Dato che gli elementi di questo software hanno una struttura ad albero, si può usare il Composite. Questo pattern permette di creare delle strutture composte da più oggetti e considerarle come uno singolo, senza preoccuparsi di cosa siano effettivamente. Gli oggetti ai livelli più alti delegano il lavoro ai livelli inferiori, fino ad arrivare alle “foglie” dell’albero.
Questo semplifica il client dato che deve solo specificare un nome, prezzo, quantità e sconto per tutti gli oggetti, tutti i calcoli verranno eseguiti dai vari componenti.
Struttura
Component: contiene i comportamenti comuni a tutti gli oggetti.
Leaf: l’elemento base della struttura che esegue le operazioni
Container: elemento composto da sottoelementi di cui non conosce il tipo. Ottiene i risultati dai sottoelementi e li manda al client.
Client: si interfaccia allo stesso modo con tutti gli elementi della struttura.