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
Prototype

Intento
Specifica il tipo di oggetto da creare usando una istanza prototipo, e crea le nuove istanze copiandole dal prototipo.

Descrizione
Il Prototype pattern permette ad un oggetto di creare oggetti personalizzati senza conoscere la loro classe esatta o i dettagli di come crearli.

Il pattern Prototype funziona dando un oggetto prototipo ad un oggetto e quindi iniziando la creazione di oggetti.
L'oggetto creatore quindi crea nuovi oggetti chiedendo al prototipo di fare copie di se stesso.
Bisogna quindi definire classi i cui oggetti possano duplicarsi da soli.



Benefici

  • Aggiungere e rimozione di prodotti a run time
  • Specificare nuovi oggetti variandone i valori
  • Specificare nuovi oggetti variandone la struttura
  • Riduzione del subclassing
  • Configurazione di applicazioni con classi dinamicamente

Quando utilizzarlo
  • Le classi da instanziare sono specificate a run-time, per esempio con dynamic loading.
  • Evita di costruire gerarchie di classi di factory che parallelizzano la gerarchia di prodotti.
  • Quando le istanze di una classe possono avere poche differenti combinazioni di stato.

Esempio:



public class Prototype 
   extends Object implements Cloneable {
   
   int x;
   public int getX() { return x; }
   public void setX(int val) { x = val; }
   
   int y;
   public int getY() { return y; }
   public void setY(int val) { y = val; }
   
   public Object clone() 
      throws CloneNotSupportedException 
      return super.clone();      
   }
   
   public String toString() { 
      return "x:" + x + ",y:" + y; 
   }  
}




public class Client {
   
  public static void main(String[] args
    throws CloneNotSupportedException {
      
    Prototype prot = new Prototype();
    prot.setX(1);
    prot.setY(2);
      
    Prototype inst = (Prototype)prot.clone();
    inst.setY(4);
      
    System.out.println(prot);      
    System.out.println(inst);      
  }
}



Prototype 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.