07 Design Patterns
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

07 Design Patterns

  • 320 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
320
On Slideshare
320
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
5
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. DESIGN PATTERN Talk 7 1 mercoledì 10 luglio 13
  • 2. Fallingwater, Frank Lloyd Wright, 1939 2 mercoledì 10 luglio 13
  • 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
  • 6. DESIGN PATTERN Creazionali Comportamentali Strutturali 6 mercoledì 10 luglio 13
  • 7. DESIGN PATTERN Creazionali Comportamentali Strutturali 7 mercoledì 10 luglio 13
  • 8. SINGLETON • Come assicurarmi di avere una unica istanza di una certa classe? 8 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
  • 17. • Singleton • Factory Method • Prototype • Strategy • State • Observer • Iterator • Adapter • Decorator 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
  • 23. WORKFLOW E STRUMENTI WEB Prossima puntata: mercoledì 10 luglio 13