DESIGN PATTERN
Talk 7
1
mercoledì 10 luglio 13
Fallingwater, Frank Lloyd Wright, 1939
2
mercoledì 10 luglio 13
DESIGN PATTERN
Una soluzione progettuale generale
ad un problema ricorrente.
Wikipedia
Da: Christopher Alexander, 1977
3
m...
DESIGN PATTERN
• Non sono algoritmi.
• Riguardano il come combinare gli oggetti.
• Risolvono problemi ricorrenti.
• Danno ...
CODE SMELL
• Codice duplicato
• Metodo troppo lungo
• Classe troppo grande
• Troppi parametri
• Commenti di che?
• Nomi os...
DESIGN PATTERN
Creazionali Comportamentali Strutturali
6
mercoledì 10 luglio 13
DESIGN PATTERN
Creazionali Comportamentali Strutturali
7
mercoledì 10 luglio 13
SINGLETON
• Come assicurarmi di avere una unica istanza di
una certa classe?
8
mercoledì 10 luglio 13
FACTORY METHOD
•Come fa una classe astratta a istanziare un
oggetto senza saperne la classe concreta?
9
mercoledì 10 lugli...
PROTOTYPE
• Come istanziare oggetti della stessa classe di un altro, senza
avere dipendenze sulla sua classe?
• La Prototy...
STRATEGY
• Come cambio il comportamento di un oggetto,
dato che non posso cambiargli la classe?
11
mercoledì 10 luglio 13
STATE
• Come cambio in modo sicuro il comportamento
di un oggetto al variare del suo stato interno?
12
mercoledì 10 luglio...
OBSERVER
O LISTENER
• Come posso far cambiare lo stato di tanti oggetti
quando un certo oggetto cambia stato?
13
mercoledì...
ITERATOR
• Come posso iterare tra tutti gli elementi di una
collezione senza sapere come è fatta la
collezione?
• Come pos...
ADAPTER
• Come permetto a due classi di scambiarsi
messaggi, se il client non conosce l’interfaccia del
server (o se non l...
DECORATOR
• Come estendo il comportamento di un oggetto,
senza estendere la sua classe?
16
mercoledì 10 luglio 13
• Singleton
• Factory Method
• Prototype
• Strategy
• State
• Observer
• Iterator
• Adapter
• Decorator
mercoledì 10 lugli...
SIMPLETON
• Pattern sovracomplicato per la soluzione di
problemi sempici.
• Utile per misurare la competenza degli
svilupp...
FALLACY METHOD
• Metodo ignoto che funziona, la cui esistenza
diventa evidente all’occorrenza di casi particolari.
19
merc...
PROTOTRY
• Tentativo quick & dirty: l’impegno è di riscriverlo
appena trovata una soluzione migliore. Mai.
20
mercoledì 10...
ADOPTER
• È la casa dei metodi orfani. Diventa una grande
classe non mantenibile che contiene di tutto e di
più.
21
mercol...
DETONATOR
• Molto comune ma difficile da rilevare.
• Esempio: calcoli degli anni a 2 cifre.
• Prima o poi scoppierà.
22
mer...
WORKFLOW E
STRUMENTI WEB
Prossima puntata:
mercoledì 10 luglio 13
Upcoming SlideShare
Loading in...5
×

07 Design Patterns

198

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
198
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "07 Design Patterns"

  1. 1. DESIGN PATTERN Talk 7 1 mercoledì 10 luglio 13
  2. 2. Fallingwater, Frank Lloyd Wright, 1939 2 mercoledì 10 luglio 13
  3. 3. DESIGN PATTERN Una soluzione progettuale generale ad un problema ricorrente. Wikipedia Da: Christopher Alexander, 1977 3 mercoledì 10 luglio 13
  4. 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. 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
  6. 6. DESIGN PATTERN Creazionali Comportamentali Strutturali 6 mercoledì 10 luglio 13
  7. 7. DESIGN PATTERN Creazionali Comportamentali Strutturali 7 mercoledì 10 luglio 13
  8. 8. SINGLETON • Come assicurarmi di avere una unica istanza di una certa classe? 8 mercoledì 10 luglio 13
  9. 9. FACTORY METHOD •Come fa una classe astratta a istanziare un oggetto senza saperne la classe concreta? 9 mercoledì 10 luglio 13
  10. 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. 11. STRATEGY • Come cambio il comportamento di un oggetto, dato che non posso cambiargli la classe? 11 mercoledì 10 luglio 13
  12. 12. STATE • Come cambio in modo sicuro il comportamento di un oggetto al variare del suo stato interno? 12 mercoledì 10 luglio 13
  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. 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. 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. 16. DECORATOR • Come estendo il comportamento di un oggetto, senza estendere la sua classe? 16 mercoledì 10 luglio 13
  17. 17. • Singleton • Factory Method • Prototype • Strategy • State • Observer • Iterator • Adapter • Decorator mercoledì 10 luglio 13
  18. 18. SIMPLETON • Pattern sovracomplicato per la soluzione di problemi sempici. • Utile per misurare la competenza degli sviluppatori. 18 mercoledì 10 luglio 13
  19. 19. FALLACY METHOD • Metodo ignoto che funziona, la cui esistenza diventa evidente all’occorrenza di casi particolari. 19 mercoledì 10 luglio 13
  20. 20. PROTOTRY • Tentativo quick & dirty: l’impegno è di riscriverlo appena trovata una soluzione migliore. Mai. 20 mercoledì 10 luglio 13
  21. 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. 22. DETONATOR • Molto comune ma difficile da rilevare. • Esempio: calcoli degli anni a 2 cifre. • Prima o poi scoppierà. 22 mercoledì 10 luglio 13
  23. 23. WORKFLOW E STRUMENTI WEB Prossima puntata: mercoledì 10 luglio 13
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×