7

Según tengo entendido, el método de fábrica es Fábrica simple y el objeto de fábrica es Resumen de fábrica? Y :Método de fábrica VS Objeto de fábrica

-Factory Método (simple de la fábrica):

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; 
    } 
} 

objeto de fábrica (Abstract Factory):

?

¿Estoy en lo cierto?

¿Cuánto hay de realizaciones de los patrones de fábrica y cuál es su diferencia?

+0

tienes razón, gracias – drifter

+0

Otra cosa, a menos que estés usando alguna versión antigua de Java, usa enum en lugar de ints para enumerar posibles tipos de pizza. – Renato

+0

+1, encontré este ejemplo antiguo. (Java ese momento no tenía enumeraciones todavía) – drifter

Respuesta

6

No. Un método de fábrica es una fábrica que no requiere ningún estado. Una clase de fábrica es una clase en sí misma: tiene estado y métodos que alteran ese estado. Al final, llama al método .create() y usa su estado actual para crear un nuevo objeto de un tipo diferente.

La fábrica abstracta es algo diferente: hay múltiples implementaciones de fábrica del mismo concepto abstracto. El wikipedia example es sobre e GUIFactory - esta es una fábrica abstracta, que tiene dos implementaciones: WinFactory y OSXFactory. El código del cliente no sabe qué implementación está usando, solo sabe que la fábrica crea instancias Button. Que hacen posible escribir el mismo código independientemente del sistema operativo.

+0

Entonces hay 3 tipos principales: - Fábrica - Fábrica abstracta - Método de fábrica ? – drifter

+0

sí, eso es correcto. Sin embargo, el método de fábrica y de fábrica no difiere mucho. – Bozho

+0

Tu respuesta es clara. Entiendo cuál es la diferencia entre Factory y el método de fábrica, pero ¿cuál es mejor usar? ¿y por qué? – grep

Cuestiones relacionadas