7

Jak rozumiem Metoda Fabryki to Prosta Fabryka i Obiekt Fabryki to Fabryka Abstrakcyjna? I:Metoda Fabryki Obiekt Fabryki VS

-Factory Metoda (Simple fabryczne):

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

Fabryka Object (Abstract Factory):

?

Mam rację?

Ile są realizacji wzorów Fabryki i jaka jest ich różnica?

+0

masz rację, dziękuję – drifter

+0

Jeszcze jedno, chyba że używasz starej wersji Javy, użyj enum zamiast ints, aby wymienić możliwe rodzaje pizzy. – Renato

+0

+1, Znalazłem ten pradawny przykład. (Java tego czasu jeszcze się nie spodziewała.) – drifter

Odpowiedz

6

Nie. Metoda fabryka to fabryka, która nie wymaga żadnego stanu. Klasa fabryka jest klasą samą w sobie - ma stan i metody, które zmieniają ten stan. Na koniec wywołuje się metodę .create() i wykorzystuje jej bieżący stan do utworzenia nowego obiektu innego typu.

Streszczenie fabryka to coś zupełnie innego - istnieje wiele wdrożeń fabrycznych tej samej abstrakcyjnej koncepcji. Numer wikipedia example dotyczy e GUIFactory - jest to abstrakcyjna fabryka, która ma dwie implementacje: WinFactory i OSXFactory. Kod klienta nie wie, której implementacji używa - po prostu wie, że fabryka tworzy instancje Button. Które umożliwiają napisanie tego samego kodu niezależnie od systemu operacyjnego.

+0

Istnieją 3 główne typy: - Fabryka - Fabryka abstrakcyjna - Metoda fabryczna ? – drifter

+0

tak, to prawda. Fabryka i metoda fabryczna nie różnią się jednak zbytnio. – Bozho

+0

Twoja odpowiedź jest jasna. Rozumiem, jaka jest różnica między fabryką a metodą fabryczną, ale która jest lepsza w użyciu? i dlaczego? – grep

Powiązane problemy