07 Design Patterns

Post on 17-May-2015

186 views 0 download

Transcript of 07 Design Patterns

DESIGN PATTERNTalk 7

1

mercoledì 10 luglio 13

Fallingwater, Frank Lloyd Wright, 19392

mercoledì 10 luglio 13

DESIGN PATTERN

Una soluzione progettuale generale ad un problema ricorrente.

Wikipedia

Da: Christopher Alexander, 19773

mercoledì 10 luglio 13

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

CODE SMELL•Codice duplicato

•Metodo troppo lungo

•Classe troppo grande

• Troppi parametri

•Commenti di che?

•Nomi oscuri

•Dead code

5

mercoledì 10 luglio 13

DESIGN PATTERN

Creazionali Comportamentali Strutturali6

mercoledì 10 luglio 13

DESIGN PATTERN

Creazionali Comportamentali Strutturali7

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 luglio 13

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

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 13

OBSERVERO LISTENER

•Come posso far cambiare lo stato di tanti oggetti quando un certo oggetto cambia stato?

13

mercoledì 10 luglio 13

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

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

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 luglio 13

SIMPLETON

•Pattern sovracomplicato per la soluzione di problemi sempici.

•Utile per misurare la competenza degli sviluppatori.

18

mercoledì 10 luglio 13

FALLACY METHOD

•Metodo ignoto che funziona, la cui esistenza diventa evidente all’occorrenza di casi particolari.

19

mercoledì 10 luglio 13

PROTOTRY

•Tentativo quick & dirty: l’impegno è di riscriverlo appena trovata una soluzione migliore. Mai.

20

mercoledì 10 luglio 13

ADOPTER

•È la casa dei metodi orfani. Diventa una grande classe non mantenibile che contiene di tutto e di più.

21

mercoledì 10 luglio 13

DETONATOR

•Molto comune ma difficile da rilevare.

•Esempio: calcoli degli anni a 2 cifre.

•Prima o poi scoppierà.

22

mercoledì 10 luglio 13

WORKFLOW E STRUMENTI WEB

Prossima puntata:

mercoledì 10 luglio 13