Il pattern più adatto è il Decorator, che permette di aggiungere proprietà e comportamenti ad un oggetto esistente senza modificarlo. Tutti gli impiegati hanno delle attività da svolgere a prescindere dal tipo, quindi si può estendere il comportamento dell’impiegato base senza ripeterlo per gli altri.
Struttura
Component: interfaccia che definisce i metodi comuni a tutti gli oggetti.
Concrete Component: implementazione del componente di base.
Base Decorator: classe che estende il componente di base aggiungendo o implementando i comportamenti necessari.
Concrete Decorator: aggiunge comportamenti estendendo il decoratore di base.
Client: crea il componente di base e lo passa al decoratore.