3. DESIGN PATTERN
Una soluzione progettuale generale
ad un problema ricorrente.
Wikipedia
Da: Christopher Alexander, 1977
3
mercoledì 10 luglio 13
4. DESIGN PATTERN
• Non sono algoritmi.
• Riguardano il come combinare gli oggetti.
• Risolvono problemi ricorrenti.
• Danno un linguaggio comune.
• Aumentano la comprensibilità del codice.
4
mercoledì 10 luglio 13
5. CODE SMELL
• Codice duplicato
• Metodo troppo lungo
• Classe troppo grande
• Troppi parametri
• Commenti di che?
• Nomi oscuri
• Dead code
5
mercoledì 10 luglio 13
9. FACTORY METHOD
•Come fa una classe astratta a istanziare un
oggetto senza saperne la classe concreta?
9
mercoledì 10 luglio 13
10. PROTOTYPE
• Come istanziare oggetti della stessa classe di un altro, senza
avere dipendenze sulla sua classe?
• La PrototypeFactory ha al suo interno dei prototipi.
• I prototipi implementano clone().
• La PrototypeFactory crea i nuovi oggetti per nome, clonando il
prototipo con quel nome.
10
mercoledì 10 luglio 13
11. STRATEGY
• Come cambio il comportamento di un oggetto,
dato che non posso cambiargli la classe?
11
mercoledì 10 luglio 13
12. STATE
• Come cambio in modo sicuro il comportamento
di un oggetto al variare del suo stato interno?
12
mercoledì 10 luglio 13
13. OBSERVER
O LISTENER
• Come posso far cambiare lo stato di tanti oggetti
quando un certo oggetto cambia stato?
13
mercoledì 10 luglio 13
14. ITERATOR
• Come posso iterare tra tutti gli elementi di una
collezione senza sapere come è fatta la
collezione?
• Come posso iterare tra tutti gli elementi di una
collezione senza averli a priori?
14
mercoledì 10 luglio 13
15. ADAPTER
• Come permetto a due classi di scambiarsi
messaggi, se il client non conosce l’interfaccia del
server (o se non la può usare)?
15
mercoledì 10 luglio 13
16. DECORATOR
• Come estendo il comportamento di un oggetto,
senza estendere la sua classe?
16
mercoledì 10 luglio 13
18. SIMPLETON
• Pattern sovracomplicato per la soluzione di
problemi sempici.
• Utile per misurare la competenza degli
sviluppatori.
18
mercoledì 10 luglio 13
19. FALLACY METHOD
• Metodo ignoto che funziona, la cui esistenza
diventa evidente all’occorrenza di casi particolari.
19
mercoledì 10 luglio 13
20. PROTOTRY
• Tentativo quick & dirty: l’impegno è di riscriverlo
appena trovata una soluzione migliore. Mai.
20
mercoledì 10 luglio 13
21. ADOPTER
• È la casa dei metodi orfani. Diventa una grande
classe non mantenibile che contiene di tutto e di
più.
21
mercoledì 10 luglio 13
22. DETONATOR
• Molto comune ma difficile da rilevare.
• Esempio: calcoli degli anni a 2 cifre.
• Prima o poi scoppierà.
22
mercoledì 10 luglio 13