La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

© 2010 - CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi

Presentazioni simili


Presentazione sul tema: "© 2010 - CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi"— Transcript della presentazione:

1 © 2010 - CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi lombardi@dsi.unimi.it

2 © 2010 - CEFRIEL The present original document was produced by CEFRIEL and the Teacher for the benefit and internal use of this course, and nobody else may claim any right or paternity on it. No right to use the document for any purpose other than the Intended purpose and no right to distribute, disclose, release, furnish or disseminate it or a part of it in any way or form to anyone without the prior express written consent of CEFRIEL and the Teacher. © copyright Cefriel and the Teacher-Milan-Italy-23/06/2008. All rights reserved in accordance with rule of law and international agreements.

3 © 2010 - CEFRIEL Sommario SLIDECONTENUTO Creazionali Pattern di creazione di nuove istanze Strutturali Pattern di strutturazione dati/comunicazione Comportamentali Gestione del comportamento negli algoritmi

4 © 2010 - CEFRIEL Creazionali: Singleton Scopo: –istanza singola di una classe (es.: registry); –rispetto a soli metodi statici permette di sfruttare polimorfismo e altri pattern creazionali (factory, …). Ingredienti: –costruttore privato (sparisce quello di default); –attributo statico privato per mantenere lunica istanza; –factory method getInstance per lazy-evaluation.

5 © 2010 - CEFRIEL Creazionali: Factory Method Scopo: –generazione di una istanza da metodo statico; –utilizzo di strutture dati statiche durante la creazione; es.: per implementare il riciclo di istanze; Ingredienti: –costruttore privato (impedisce listanziazione diretta); –metodi statici di restituzione di istanze.

6 © 2010 - CEFRIEL Creazionali: Abstract Factory Scopo: –disaccoppiare le classi che istanziano da quelle che scelgono e configurano le istanze; –eventualmente astrarre la natura delle istanze; Ingredienti: –classe target da istanziare; –classe astratta con factory method non statico; –classi concrete che implementano al factory; –eventualmente costruttore superclasse factory; –eventualmente gerarchia classe target.

7 © 2010 - CEFRIEL Creazionali: Builder Scopo: –fornire uno strumento trasparente per la creazione di oggetti complessi (composti da più parti); Ingredienti: –classe composta e parti componenti; –classe builder con metodi di: –creazione delle parti; –creazione dellistanza usando le parti precedenti; –eventuale hiding di costruttori e classi delle parti.

8 © 2010 - CEFRIEL Creazionali: Prototype Scopo: –fornire un meccanismo per generare istanze da prototipi (es.: tramite loro clonazione); Ingredienti: –metodo di istanza per la generazione di unaltra istanza della stessa classe (o sottoclasse); –eventuale costruttore nascosto al client; –eventuali parametri aggiuntivi nel factory method.

9 © 2010 - CEFRIEL Strutturali: Adapter Scopo: –adattare unimplementazione a una gerarchia diversa; –nascondere il reale implementor delloperazione; Ingredienti: –gerarchia astrazione; –classe adapter che implementante lastrazione; –istanza dellimplementor nelladapter; –operazioni delegate allimplementor; –eventuale codice di adattamento semantico.

10 © 2010 - CEFRIEL Strutturali: Composite Scopo: –comporre ad albero elementi semplici e composti; –si pensi a oggetti grafici e gruppi di oggetti grafici; Ingredienti: –gerarchia di astrazione; –classe aderente alla gerarchia composta con elementi della stessa (dellinterfaccia/superclasse astratta); –operazioni delegate agli elementi della composizione.

11 © 2010 - CEFRIEL Strutturali: Decorator Scopo: –decorare il comportamento di una classe concreta; –rendere tale differenza trasparente al client; Ingredienti: –gerarchia di astrazione; –sottoclasse della classe da decorare (Leaf); –operazioni delegate alla superclasse concreta… –…successivamente modificate con codice aggiuntivo.

12 © 2010 - CEFRIEL Strutturali: Facade Scopo: –mostrare un punto di accesso semplice a un pacchetto dalle operazioni complesse; –nascondere complessi dettagli di collaborazione; Ingredienti: –una classe che accede al contenuto del pacchetto; –operazioni semanticamente semplici orchestranti le classi presenti allinterno del pacchetto.

13 © 2010 - CEFRIEL Comportamentali: Command Scopo: –isolare una funzionalità dai suoi punti di accesso; –astrarre il concetto di operazione eseguibile; Ingredienti: –classe astratta o interfaccia Command; –metodo astratto di esecuzione come contratto.

14 © 2010 - CEFRIEL Comportamentali: Iterator Scopo: –iterare sugli elementi di una struttura dati senza conoscere i dettagli della struttura stessa; Ingredienti: –interfaccia di astrazione del concetto di iterazione; –astrazione di struttura dati che supporta literatore; –strutture dati implementanti tale astrazione.

15 © 2010 - CEFRIEL Comportamentali: Observer Scopo: –consentire lastrazione della notifica di eventi; –disaccoppiare chi genera levento da chi lo riceve; Ingredienti: –interfaccia di notifica dellevento (ricevente); –ascoltatori che la implementano; –classe di generazione degli aggiornamenti.

16 © 2010 - CEFRIEL Comportamentali: Template Method Scopo: –creare una gerarchia di classi in cui varia solamente una funzionalità, senza dover replicare codice; –astrarre una parte di una classe usata da sé stessa; Ingredienti: –classe astratta con metodo astratto (protetto); –sottoclassi implementanti quel metodo.

17 © 2010 - CEFRIEL Comportamentali: Strategy Scopo: –astrarre un algoritmo facendo sì la sua scelta avvenga a run-time (criteri vari, es.: efficienza); Ingredienti: –interfaccia/classe astratta rappresentante lalgoritmo; –classi implementanti in concreto lalgoritmo stesso.

18 © 2010 - CEFRIEL Da qui? Abbiamo visto solamente un assaggio: –i design pattern GoF non sono solo questi; –molti altri design pattern esistono in letteratura; –costruire architetture usando i design pattern richiede esperienza oltre che profonda comprensione; –esistono altri strumenti come smell e antipattern; –tecniche di refactoring vengono utilizzate per trasformare unarchitettura in unaltra migliore. Letteratura? –Design Patterns della Gang of Four; –Refactoring di Fowler; –Patterns of Enterprise Applications Architecture, Fowler.


Scaricare ppt "© 2010 - CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi"

Presentazioni simili


Annunci Google