Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

07 Design Patterns

429 views

Published on

  • Be the first to comment

  • Be the first to like this

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

×