Per implementare questa libreria si possono usare la Strategy e il Factory Method.
Strategy
Consente di definire una classe separata per ogni comportamento, che sarĂ intercambiabile con un altro. Questo permette di cambiare il comportamento di un oggetto senza modificarlo, delegando la logica ad una strategia specifica.
Struttura
- Context: comunica con lâoggetto attraverso la strategy, che può essere modificata a runtime.
- Strategy: lâinterfaccia comune a tutti gli oggetti.
- Concrete Strategy: implementa la logica specifica di un algoritmo.
- Context: ha un riferimento alla strategy da utilizzare e chiama il metodo della strategy specifica, senza sapere qual è.
- Client: crea lâoggetto della strategy necessaria e lo passa al context.
Per questo progetto la strategy permette di creare unâimplementazione per ogni database mantenendo i metodi comuni find
e create
e decidere a runtime quale utilizzare.
Factory Method
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.
Creando la connessione al database attraverso un factory method permette di istanziare le librerie senza conoscere o specificare il nome delle classi.
Flusso delle operazioni
- Lâutente crea lâistanza corretta del database con il factory method
- La libreria espone i metodi find e create necessari per le query al database.
- I metodi delegano lâesecuzione alla strategia specifica