Java User Group Torino

English spoken people, click here
AltriJug
Articoli
Blog
Bookmarks
ChiSiamo
Cinema
Eventi
FAQ
IscriversiAlJug
FunnyJug
HobbiesAndSports
ImparareNuoveCose
JavaJobs
JavaTraining
Libri
MailingList
Meeting
News
ProgettiAttivita
Shop
Software
StoriaDelJug
SunItalia

RSS Feed
RSS Meetings Feed


I have joined Anti-IF Campaign


Spread Firefox Affiliate Button




Logo Csp

Logo Louis Urban



CoordinamentoJug
PagineDiServizio
Manutenzione
FactoryMethod

Intento
Definisce una interfaccia per creare un oggetto, ma lascia alle sottoclassi decidere quale classe instanziare.

Also Known As
Virtual Constructor

Descrizione
Il Factory Method permette ad una classe di lasciar definire l'instanziazione di un oggetto ad una sua sottoclasse, ciò è utile per costruire oggetti per uno specifico proposito senza che il richiedente conosca la classe specifica che viene instanziata.



Benefici

  • Elimina la necessità di legare una classe applicativa nel codice. Il codice fa riferimento solo all'interfaccia, e tu puoi lavorare co ogni classe che fa uso di quell'interfaccia.
  • Permette alle sottoclassi di fornire una versione estesa dell'oggetto, poiché creare un oggetto all'interno di una classe è più flessibile di creare un oggetto direttamente nel client

Quando utilizzarlo
  • Una classe non può prevedere la classe degli oggetti che deve creare.
  • Una classe vuole che le sue sottoclassi possano specificare gli oggetti che crea
  • Le classi delegano la responsabilità ad uno o più sottoclassi helper, e tu vuoi localizzare la conoscenza di quale sottoclasse helper sia delegata.

Esempio:


/**
 * @stereotype Abstract Product
 */
public interface Document 
   public void open();  
   public void close();
   public void save();   
}



import java.util.;

/**
 * @stereotype Abstract Creator
 */
public abstract class Application {

   Collection docs = new ArrayList();

   public void newDocument() {      
      Document doc = createDocument();
      docs.add(doc);
      doc.open();
   }
   
   public abstract Document createDocument();
}




/**
 * @stereotype Concrete Product
 */
public class MyDocument implements Document 
   public void open() { System.out.println("Open: drawing =document.")
   public void close() { System.out.println("Close: drawing =document.")
   public void save() { System.out.println("Save: drawing =document.")}   
}




/**
 * @stereotype Concrete Creator
 */
public class MyApplication extends Application 
   
   public Document createDocument() {
      return new MyDocument();
   }
}




public class Client {
   public static void main(String[] args) {      
      Application app = new MyApplication();
      app.newDocument();
   }
}


FactoryMethod is mentioned on: CreationalPatterns

VQWiki includes notification systems; however, you have not yet become a member.



VeryQuickWiki Version 2.7.1 | Admin

Powered by:
Logo Csp Logo Louis Urban

Content of this site is Copyright (C) 2003 JUG Torino and its members. Java and all Java based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. Other trademarks are registered by respective owners.