Indicazioni generali
Tra quelli visti, i pattern possibili per le soluzioni sono:
Immaginate di dover gestire un software di assistenza dove l'utente può trovare informazioni e comprare ricambi per aspirapolvere.
Tutti i modelli di aspirapolvere hanno a disposizione 3 accessori, ma ognuno ha la sua versione dell'accessorio:
La pagina del software deve mostrare i dettagli dell'aspirapolvere, la lista dei suoi accessori con i dettagli, ecc. Le informazioni sono sempre nello stesso formato.
Descrivere che pattern usereste per assicurarvi di mostrare sempre solo le informazioni relative al prodotto. Includendo una breve descrizione del ragionamento e una eventuale rappresentazione del risultato finale.
Immaginate di avere un sito visitato da tanti utenti e ogni utente ha la sua immagine profilo.
Le immagini sono salvate nel loro formato originale in uno spazio di archiviazione in cloud (amazon S3 ad esempio) e vengono tornate quando richieste dall'utente.
Il vostro sito però è cresciuto molto e tornare queste immagini ogni volta comincia a costarvi una fortuna. Soprattutto perché le trasferite con la loro risoluzione originale ogni volta.
Decidete quindi di fare due ottimizzazioni:
Abbiamo quindi i seguenti casi:
Descrivere che design pattern usereste per risolvere la situazione descritta sopra, e la soluzione ottenuta.
Indizi:
Dovete costruire un preventivatore. Questo preventivatore è diviso in diverse sezioni, ogni sezione può contenere settosezioni e/o elementi base (accessori, servizi, ecc):
Ogni sezione/sottosezione/elemento può avere una quantità e uno sconto. Gli elementi base derivano da un listino e hanno un prezzo base di partenza.
Il software deve mostrare per ogni sezione/sottosezione il suo prezzo base e il prezzo applicato lo sconto.
Il prezzo base di una sezione/sottosezione è dato dalla somma dei prezzi base dei suoi elementi o sottosezioni. Il prezzo scontato è calcolato usando come base la somma dei prezzi scontati delle sue sottosezioni e elementi, sulla quale poi viene applicato lo sconto della sezione.
Il software mostra poi un costo totale con e senza sconti applicati
Scegliere e descrivere un pattern che vi permetta di gestire i calcoli in modo semplice e scalabile, in modo da poter aggiungere e modificare le sezioni in futuro senza dover cambiare la logica di calcolo.
Una azienda è composta da Empoyee, ognuno dei quali vede le sue attività da fare su un portale web.
Un Engineer è un tipo di Employee che riceverà dei task di sviluppo.
Un AdministrativeManager è un Engineer che fa da capoufficio, amministra e alloca le risorse.
Un ProjectManager è un Engineer che fa da capoprogetto, verifica i progressi di un determinato progetto, assegna compiti e priorità.
In alcuni casi un Engineer può essere sia capoufficio che capoprogetto.
Nel software che fornisce le attività da fare per ognuna di queste figure vengono tornate le attività da svolgere durante la giornata.
Descrivere il design pattern utilizzato per gestire questo tipo di struttura (nome e scopo generale) e la soluzione, includendo una breve descrizione del ragionamento e una eventuale rappresentazione del risultato finale.
State sviluppando una libreria che consenta all'utente di definire la struttura di dei dati e salvarli in un database a scelta. E' possibile scegliere tra diversi database che già avete predisposto, inoltre un utente può anche decidere implementare la logica per usarne uno non ancora compatibile.
La libreria permette di configurare il database scelto, e per lo scopo di questo esercizio mette a disposizione solo due metodi:
params e data sono nello stesso formato indipendentemente dal tipo di database scelto.
I requisiti della libreria sono:
Possiamo immaginare quindi due parti di codice: una libreria base e più integrazioni, una per ogni tipo di database.
Descrivere quale o quali design pattern facilitano la creazione di questa libreria, spiegando brevemente le operazioni chiave del flusso di query e create e se sono di competenza della libreria base o dell'integrazione.
E' passato un anno da quando avete sviluppato il preventivatore sopra.
Vi viene chiesto di andare ad aggiornare un unico file excel su Google Drive ogni volta che un ordine viene aggiunto, modificato o eliminato. Ad ogni ordine corrisponde una riga.
La libreria che vi permette di scrivere su Drive lavora a basso livello, per ogni dato che dovete andare a scrivere vi serve il link del file (sempre lo stesso), il nome del foglio (sempre lo stesso), le coordinate su cui lavorare, e infine i dati da scrivere.
Ogni ordine ha il suo codice univoco, e deve rimanere all'oscuro del fatto che lo state esportando su Drive.
Possiamo riassumere i passaggi delle 3 operazioni da svolgere:
Bisogna tenere presente che ci sono diverse parti del software dove possono essere lanciate queste operazioni.
Quale design pattern vi viene in aiuto per implementare quanto descritto?