SlideShare a Scribd company logo
Ingegneria del Software
Introduzione al pattern…
Problema introduttivo




              Come istanziare gli oggetti
              Come istanziare gli oggetti
              di tipo Document?
              di tipo Document?




 Ingegneria del Software - A.A. 2003/2004
Presentazione del pattern
     Factory Method
Il pattern Factory Method (1/10)

•   Nome       Factory Method [GoF95]

•   Synopsis   Il pattern permette di scrivere una classe che
               delega la creazione degli oggetti che usa,
               rendendola indipendente dalle rispettive classi

•   Context    - Situazioni in cui è desiderabile centralizzare la
                 fase di creazione degli oggetti in una classe
                 dedicata
               - Esempio:
                       Creazione di diversi tipi di documenti
                       all’interno di un’applicazione da ufficio
                       (documenti testuali, fogli di stile, ecc.)
                                                             [segue]


                     Ingegneria del Software - A.A. 2003/2004
Il pattern Factory Method (2/10)




       Ingegneria del Software - A.A. 2003/2004
Il pattern Factory Method (3/10)



•   Forces

    – Una classe può creare oggetti senza conoscere a priori quali
      sono le sottoclassi di una data classe, o quali classi
      implementano una data interfaccia.

    – L’insieme di classi che una classe può istanziare
      potrebbe essere dinamico nel tempo.




                      Ingegneria del Software - A.A. 2003/2004
Il pattern Factory Method (4/10)



•   Solution - Gli “attori” del pattern Factory Method sono:
    – Product
      Superclasse astratta o interface degli oggetti prodotti dalla
      Factory (es. Document)
    – Concrete Product
      Ogni tipo di istanza creata dalla Factory (es. MyDocument)
    – Creation Requestor
      Classe che delega la creazione di oggetti alla Factory
    – Factory IF
      Specifica delle “regole di comunicazione” con la Factory
    – Factory Class
      Implementazione della Factory



                      Ingegneria del Software - A.A. 2003/2004
Il pattern Factory Method (5/10)




             Da Context…
       Ingegneria del Software - A.A. 2003/2004
Il pattern Factory Method (6/10)




                 … a Solution

       Ingegneria del Software - A.A. 2003/2004
Il pattern Factory Method (7/10)



•   Consequences

       - La classe che richiede la creazione è indipendente dalle
         classi degli oggetti “concrete product” che utilizza

       - L’insieme degli oggetti “concrete product” che possono
         essere creati può cambiare dinamicamente




                    Ingegneria del Software - A.A. 2003/2004
Il pattern Factory Method (8/10)


•   Implementation

       - Se Factory può creare più tipi di “concrete product”, il
         metodo createProduct deve prendere
         necessariamente un parametro che gli permetta di
         decidere quale tipo di “concrete product” creare

       - Il metodo createProduct può essere implementato con:
               - cascata di if
              - hash table indicizzata con i valori passati per
                parametro contenente oggetti della classe:
                     java.lang.reflect.Contructor



                     Ingegneria del Software - A.A. 2003/2004
Il pattern Factory Method (9/10)



•   Java API usage     - Nella classe URLConnection c’è un
                         metodo chiamato getContent che
                         restituisce il contenuto di una URL (es.
                         pagina HTML, gif, jpg, ecc).
                         Esercizio: Analizzare le API java e
                                   riconoscere il pattern

•   Code example       - Esercizio: scrivere il codice dell’esempio
                         presentato nella slide successiva

•   Related Patterns - cfr. Abstract Factory, Template Method,
                       Prototype


                     Ingegneria del Software - A.A. 2003/2004
Il pattern Factory Method (10/10)




       Ingegneria del Software - A.A. 2003/2004
Laboratorio


Il nome di una persona può
essere scritto in due modi:
• Cognome, Nome
• Nome Cognome

Scrivere uno programma che
divide Nome e Cognome
correttamente utilizzando lo
schema del pattern Factory




                      Ingegneria del Software - A.A. 2003/2004
Classe “Product”: Namer




   Ingegneria del Software - A.A. 2003/2004
Classe “ConcreteProduct”: FirstFirst




        Ingegneria del Software - A.A. 2003/2004
Classe “ConcreteProduct”: LastFirst




        Ingegneria del Software - A.A. 2003/2004
Classe “Factory”: NameFactory




     Ingegneria del Software - A.A. 2003/2004
Classe “CreationRequestor”

Nel costruttore della classe che utilizza la factory:



Il metodo lanciato quando si genera l’evento di bottone
Compute premuto:




               Ingegneria del Software - A.A. 2003/2004
Domande?




Ingegneria del Software - A.A. 2003/2004

More Related Content

PDF
Lezione 09 - Abstract Factory
PDF
Lezione 08 - Iterator
PDF
Lezione 11 - Visitor
PDF
Lezione 13 - Strategy
PPTX
Contentmarketing
PPTX
Join us to development New Career Future
PPT
Ci 102 Kelsy Sadler
PDF
Lezione 11 - Bridge
Lezione 09 - Abstract Factory
Lezione 08 - Iterator
Lezione 11 - Visitor
Lezione 13 - Strategy
Contentmarketing
Join us to development New Career Future
Ci 102 Kelsy Sadler
Lezione 11 - Bridge

Similar to Lezione 04 - Factory method (20)

PDF
Lezione 07 - Decorator
PDF
Lezione 06 - Façade
PDF
Visual Studio Performance Tools
PDF
DotNetToscana - Sessione TypeScript
PDF
Lezione 03 - Interface
PDF
Sistemi Context-aware: Esercitazione 3
PDF
Progetto SOD Davide Sito
PDF
Progettazione e realizzazione di un sistema software per il time logging
ODP
Aspect Oriented Programming
PPT
Configurazione automatica di ambienti di testing per reti di calcolatori - te...
PPTX
Presentazione Sviluppo di un prototipo di interfaccia
PDF
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
PDF
S354 php-5.x-e-my sql-5.x
PPTX
Cert02 70-410
PDF
Laravel Framework PHP
PDF
Studio e implementazione di uno strumento di configurazione e visualizzazione...
PPTX
PowerMock TDD User Group Milano
PDF
Generazione automatica diagrammi di rete con template pptx
PDF
Lezione 01 - Singleton
PPTX
Generazione di diagrammi ArchiMate da modelli ontologici di EA e meta modello...
Lezione 07 - Decorator
Lezione 06 - Façade
Visual Studio Performance Tools
DotNetToscana - Sessione TypeScript
Lezione 03 - Interface
Sistemi Context-aware: Esercitazione 3
Progetto SOD Davide Sito
Progettazione e realizzazione di un sistema software per il time logging
Aspect Oriented Programming
Configurazione automatica di ambienti di testing per reti di calcolatori - te...
Presentazione Sviluppo di un prototipo di interfaccia
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
S354 php-5.x-e-my sql-5.x
Cert02 70-410
Laravel Framework PHP
Studio e implementazione di uno strumento di configurazione e visualizzazione...
PowerMock TDD User Group Milano
Generazione automatica diagrammi di rete con template pptx
Lezione 01 - Singleton
Generazione di diagrammi ArchiMate da modelli ontologici di EA e meta modello...
Ad

Recently uploaded (6)

PDF
GIÁO ÁN CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512 (2 CỘT) NĂM HỌC ...
PDF
Presentazione educazione finanziaria e informazione.pdf
PDF
Mazzoni-Reggi-2012-Effetto-Lucifero-Su-Wikipedia.pdf
PDF
GIÁO ÁN KẾ HOẠCH BÀI DẠY CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512...
PDF
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 FRIENDS GLOBAL - CẢ NĂM (24...
PDF
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 EXPLORE NEW WORLDS - CẢ NĂM...
GIÁO ÁN CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512 (2 CỘT) NĂM HỌC ...
Presentazione educazione finanziaria e informazione.pdf
Mazzoni-Reggi-2012-Effetto-Lucifero-Su-Wikipedia.pdf
GIÁO ÁN KẾ HOẠCH BÀI DẠY CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512...
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 FRIENDS GLOBAL - CẢ NĂM (24...
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 EXPLORE NEW WORLDS - CẢ NĂM...
Ad

Lezione 04 - Factory method

  • 3. Problema introduttivo Come istanziare gli oggetti Come istanziare gli oggetti di tipo Document? di tipo Document? Ingegneria del Software - A.A. 2003/2004
  • 4. Presentazione del pattern Factory Method
  • 5. Il pattern Factory Method (1/10) • Nome Factory Method [GoF95] • Synopsis Il pattern permette di scrivere una classe che delega la creazione degli oggetti che usa, rendendola indipendente dalle rispettive classi • Context - Situazioni in cui è desiderabile centralizzare la fase di creazione degli oggetti in una classe dedicata - Esempio: Creazione di diversi tipi di documenti all’interno di un’applicazione da ufficio (documenti testuali, fogli di stile, ecc.) [segue] Ingegneria del Software - A.A. 2003/2004
  • 6. Il pattern Factory Method (2/10) Ingegneria del Software - A.A. 2003/2004
  • 7. Il pattern Factory Method (3/10) • Forces – Una classe può creare oggetti senza conoscere a priori quali sono le sottoclassi di una data classe, o quali classi implementano una data interfaccia. – L’insieme di classi che una classe può istanziare potrebbe essere dinamico nel tempo. Ingegneria del Software - A.A. 2003/2004
  • 8. Il pattern Factory Method (4/10) • Solution - Gli “attori” del pattern Factory Method sono: – Product Superclasse astratta o interface degli oggetti prodotti dalla Factory (es. Document) – Concrete Product Ogni tipo di istanza creata dalla Factory (es. MyDocument) – Creation Requestor Classe che delega la creazione di oggetti alla Factory – Factory IF Specifica delle “regole di comunicazione” con la Factory – Factory Class Implementazione della Factory Ingegneria del Software - A.A. 2003/2004
  • 9. Il pattern Factory Method (5/10) Da Context… Ingegneria del Software - A.A. 2003/2004
  • 10. Il pattern Factory Method (6/10) … a Solution Ingegneria del Software - A.A. 2003/2004
  • 11. Il pattern Factory Method (7/10) • Consequences - La classe che richiede la creazione è indipendente dalle classi degli oggetti “concrete product” che utilizza - L’insieme degli oggetti “concrete product” che possono essere creati può cambiare dinamicamente Ingegneria del Software - A.A. 2003/2004
  • 12. Il pattern Factory Method (8/10) • Implementation - Se Factory può creare più tipi di “concrete product”, il metodo createProduct deve prendere necessariamente un parametro che gli permetta di decidere quale tipo di “concrete product” creare - Il metodo createProduct può essere implementato con: - cascata di if - hash table indicizzata con i valori passati per parametro contenente oggetti della classe: java.lang.reflect.Contructor Ingegneria del Software - A.A. 2003/2004
  • 13. Il pattern Factory Method (9/10) • Java API usage - Nella classe URLConnection c’è un metodo chiamato getContent che restituisce il contenuto di una URL (es. pagina HTML, gif, jpg, ecc). Esercizio: Analizzare le API java e riconoscere il pattern • Code example - Esercizio: scrivere il codice dell’esempio presentato nella slide successiva • Related Patterns - cfr. Abstract Factory, Template Method, Prototype Ingegneria del Software - A.A. 2003/2004
  • 14. Il pattern Factory Method (10/10) Ingegneria del Software - A.A. 2003/2004
  • 15. Laboratorio Il nome di una persona può essere scritto in due modi: • Cognome, Nome • Nome Cognome Scrivere uno programma che divide Nome e Cognome correttamente utilizzando lo schema del pattern Factory Ingegneria del Software - A.A. 2003/2004
  • 16. Classe “Product”: Namer Ingegneria del Software - A.A. 2003/2004
  • 17. Classe “ConcreteProduct”: FirstFirst Ingegneria del Software - A.A. 2003/2004
  • 18. Classe “ConcreteProduct”: LastFirst Ingegneria del Software - A.A. 2003/2004
  • 19. Classe “Factory”: NameFactory Ingegneria del Software - A.A. 2003/2004
  • 20. Classe “CreationRequestor” Nel costruttore della classe che utilizza la factory: Il metodo lanciato quando si genera l’evento di bottone Compute premuto: Ingegneria del Software - A.A. 2003/2004