07 design patterns
TRANSCRIPT
![Page 1: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/1.jpg)
DESIGN PATTERNTalk 7
1
mercoledì 10 luglio 13
![Page 2: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/2.jpg)
Fallingwater, Frank Lloyd Wright, 19392
mercoledì 10 luglio 13
![Page 3: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/3.jpg)
DESIGN PATTERN
Una soluzione progettuale generale ad un problema ricorrente.
Wikipedia
Da: Christopher Alexander, 19773
mercoledì 10 luglio 13
![Page 4: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/4.jpg)
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
![Page 5: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/5.jpg)
CODE SMELL•Codice duplicato
•Metodo troppo lungo
•Classe troppo grande
• Troppi parametri
•Commenti di che?
•Nomi oscuri
•Dead code
5
mercoledì 10 luglio 13
![Page 6: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/6.jpg)
DESIGN PATTERN
Creazionali Comportamentali Strutturali6
mercoledì 10 luglio 13
![Page 7: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/7.jpg)
DESIGN PATTERN
Creazionali Comportamentali Strutturali7
mercoledì 10 luglio 13
![Page 8: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/8.jpg)
SINGLETON
•Come assicurarmi di avere una unica istanza di una certa classe?
8
mercoledì 10 luglio 13
![Page 9: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/9.jpg)
FACTORY METHOD
•Come fa una classe astratta a istanziare un oggetto senza saperne la classe concreta?
9
mercoledì 10 luglio 13
![Page 10: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/10.jpg)
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
![Page 11: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/11.jpg)
STRATEGY
•Come cambio il comportamento di un oggetto, dato che non posso cambiargli la classe?
11
mercoledì 10 luglio 13
![Page 12: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/12.jpg)
STATE
•Come cambio in modo sicuro il comportamento di un oggetto al variare del suo stato interno?
12
mercoledì 10 luglio 13
![Page 13: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/13.jpg)
OBSERVERO LISTENER
•Come posso far cambiare lo stato di tanti oggetti quando un certo oggetto cambia stato?
13
mercoledì 10 luglio 13
![Page 14: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/14.jpg)
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
![Page 15: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/15.jpg)
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
![Page 16: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/16.jpg)
DECORATOR
•Come estendo il comportamento di un oggetto, senza estendere la sua classe?
16
mercoledì 10 luglio 13
![Page 17: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/17.jpg)
•Singleton
• Factory Method
•Prototype
•Strategy
•State
•Observer
• Iterator
•Adapter
•Decorator
mercoledì 10 luglio 13
![Page 18: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/18.jpg)
SIMPLETON
•Pattern sovracomplicato per la soluzione di problemi sempici.
•Utile per misurare la competenza degli sviluppatori.
18
mercoledì 10 luglio 13
![Page 19: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/19.jpg)
FALLACY METHOD
•Metodo ignoto che funziona, la cui esistenza diventa evidente all’occorrenza di casi particolari.
19
mercoledì 10 luglio 13
![Page 20: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/20.jpg)
PROTOTRY
•Tentativo quick & dirty: l’impegno è di riscriverlo appena trovata una soluzione migliore. Mai.
20
mercoledì 10 luglio 13
![Page 21: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/21.jpg)
ADOPTER
•È la casa dei metodi orfani. Diventa una grande classe non mantenibile che contiene di tutto e di più.
21
mercoledì 10 luglio 13
![Page 22: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/22.jpg)
DETONATOR
•Molto comune ma difficile da rilevare.
•Esempio: calcoli degli anni a 2 cifre.
•Prima o poi scoppierà.
22
mercoledì 10 luglio 13
![Page 23: 07 Design Patterns](https://reader033.vdocumenti.com/reader033/viewer/2022052619/5557d628d8b42af2178b4da7/html5/thumbnails/23.jpg)
WORKFLOW E STRUMENTI WEB
Prossima puntata:
mercoledì 10 luglio 13