Lezione 04 - Factory method

2,035 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,035
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
47
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Lezione 04 - Factory method

  1. 1. Ingegneria del Software
  2. 2. Introduzione al pattern…
  3. 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. 4. Presentazione del pattern Factory Method
  5. 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. 6. Il pattern Factory Method (2/10) Ingegneria del Software - A.A. 2003/2004
  7. 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. 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. 9. Il pattern Factory Method (5/10) Da Context… Ingegneria del Software - A.A. 2003/2004
  10. 10. Il pattern Factory Method (6/10) … a Solution Ingegneria del Software - A.A. 2003/2004
  11. 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. 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. 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. 14. Il pattern Factory Method (10/10) Ingegneria del Software - A.A. 2003/2004
  15. 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. 16. Classe “Product”: Namer Ingegneria del Software - A.A. 2003/2004
  17. 17. Classe “ConcreteProduct”: FirstFirst Ingegneria del Software - A.A. 2003/2004
  18. 18. Classe “ConcreteProduct”: LastFirst Ingegneria del Software - A.A. 2003/2004
  19. 19. Classe “Factory”: NameFactory Ingegneria del Software - A.A. 2003/2004
  20. 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
  21. 21. Domande? Ingegneria del Software - A.A. 2003/2004

×