7

Come ho capito Il metodo di fabbrica è semplice Fabbrica e Oggetto di fabbrica è Fabbrica astratta? E:Metodo di fabbrica VS Oggetto di fabbrica

-Factory Method (Factory semplice):

public class SimplePizzaFactory { 
    public static final int CHEESE = 1; 
    public static final int PEPPERONI = 2; 
    public static final int VEGGIE = 3; 

    public static Pizza createPizza(int type) { 
     Pizza pizza = null; 

     if (type == CHEESE) { 
      pizza = new CheesePizza(); 
     } else if (type == PEPPERONI) { 
      pizza = new PepperoniPizza(); 
     } else if (type == VEGGIE) { 
      pizza = new VeggiePizza(); 
     } 

     return pizza; 
    } 
} 

fabbrica Object (Abstract Factory):

?

Ho ragione?

Quanto ci sono realizzazioni di modelli di fabbrica e qual è la loro differenza?

+0

hai ragione, grazie – drifter

+0

Solo un'altra cosa, a meno che non si sta utilizzando una versione antica di Java, si prega di utilizzare enum invece di int di enumerare i possibili tipi di pizza. – Renato

+0

+1, ho trovato questo antico esempio. (Java quella volta non aveva ancora enum.) – drifter

risposta

6

No. Una fabbrica-metodo è una fabbrica che non richiede alcuna condizione. Una classe factory è una classe stessa - ha uno stato e metodi che alterano quello stato. Alla fine si chiama il metodo .create() e si utilizza il suo stato corrente per creare un nuovo oggetto di un tipo diverso.

Abstract Factory è una cosa diversa - ci si dispone di più implementazioni di fabbrica dello stesso concetto astratto. Il wikipedia example è circa e GUIFactory - si tratta di una fabbrica di astratto, che ha due implementazioni: WinFactory e OSXFactory. Il codice cliente non sa quale implementazione sta utilizzando, semplicemente sa che la fabbrica crea istanze Button. Che rendono possibile scrivere lo stesso codice indipendentemente dal sistema operativo.

+0

Quindi ci sono 3 tipi principali: - Fabbrica - Fabbrica astratta - Metodo di fabbrica ? – drifter

+0

sì, è corretto. Tuttavia, il metodo factory e factory non differiscono molto. – Bozho

+0

La tua risposta è chiara. Capisco qual è la differenza tra metodo Factory e factory, ma quale è meglio usare? e perché? – grep