Per risolvere il problema si può utilizzare il Factory Method, che permette di creare oggetti attraverso unâinterfaccia comune lasciando la logica dellâimplementazione agli oggetti stessi. Gli oggetti verranno creati attraverso il factory method, che si occuperĂ di istanziare lâoggetto.
In questo caso, utilizzare il factory method permette di aggiungere facilmente nuovi modelli di aspirapolvere ognuno con un suo set di accessori; inoltre, lâapplicazione client non si dovrĂ occupare di come recuperare i dati dei vari modelli, dato che lo farĂ il metodo factory.
Struttura
Creator: classe (opzionalmente astratta) che definisce il factory method, che a sua volta può essere astratto o avere unâimplementazione predefinita che le sottoclassi possono sovrascrivere.
Concrete Creator: sottoclasse che implementa o estende il Creator e sovrascrive il factory method.
Product: interfaccia per i prodotti concreti.
Concrete Product: implementazioni del Product istanziate attraverso il factory method.