Wpisany przez Kamil Dworak,
25 sierpnia 2010 18:49
Fabryka abstrakcyjna (ang. abstract factory) - konstrukcyjny wzorzec projektowy. Fabryka pozwala tworzyć całe
rodziny produktów. Mamy zdefiniowany interfejs do tworzenia spokrewnionych obiektów. Występuje tu kompozycja oraz pewne uzależnienie od abstrakcji, a nie klas rzeczywistych. Klient oddzielony jest od implementacji klas, tworzących obiekty. Wzorzec ten łączony jest z
metodą fabrykującą.
Mamy fabrykę komputerów. Produkujemy laptopy i komputery stacjonarne PC. Jak już napisałem wyżej wspomagamy się tutaj wzorcem zwanym metoda fabrykująca. Mamy tutaj główną klasę, klasę abstrakcyjną (po niej dziedziczą szczegółowe fabryki, np. na części do laptopów i części do komputerów PC). Szczegółowe fabryki produkują swoje podzespoły, tworzą nowe obiekty przy pomocy klas rzeczywistych. Klasy implementują odpowiadające im interfejsy. Teraz już tylko składamy komputery i wydajemy (metodo fabrykująca do dzieła!).
Uogólniony diagram:
Diagram odpowiadający załączonemu przykładowi:
Mamy fabrykę komputerów. Produkujemy laptopy i komputery stacjonarne PC. Jak już napisałem wyżej wspomagamy się tutaj wzorcem zwanym metoda fabrykująca. Mamy tutaj główną klasę, klasę abstrakcyjną (po niej dziedziczą szczegółowe fabryki, np. na części do laptopów i części do komputerów PC). Szczegółowe fabryki produkują swoje podzespoły, tworzą nowe obiekty przy pomocy klas rzeczywistych. Klasy implementują odpowiadające im interfejsy. Teraz już tylko składamy komputery i wydajemy (metodo fabrykująca do dzieła!).
Uogólniony diagram:
Diagram odpowiadający załączonemu przykładowi:
- Tworzymy nową fabrykę komputerów.
- Wywołujemy metodę wydajKomputer(String typ) fabryki, załóżmy, że potrzebny nam komputer klasy PC.
- Tworzymy zmienną komputer, wywołujemy dla niej metodę zlozKomputer(typ).
- Teraz sprawdzamy, o jaki komputer nam chodziło, odpalamy konstruktor klasy KomputerPC, który jako parametr przyjmuje nową fabrykę, produkującą podzespoły (fabryka właściwa).
- Po drodze uruchamia się metoda składająca komputer skladanie() (wywołanie w konstruktorze), właśnie ona inicjuje wszystkie pola przy pomocy fabryki.
- Teraz już tylko instalacja oprogramowania. Pakujemy i sprzedajemy.
- Podobnie postępujemy z laptopem.
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Kamil Dworak | C# | Visual Studio 2008 | .cs | .cs | ***** / 8 |
Jacek Węgorkiewicz | C/C++ | .cpp | .cpp | ***** / 5 | |
Kamil Dworak | Java | .java | .java | ***** / 9 | |
Piotr Synowiec | Php | .php | .php | ***** / 1 |
Poprawiony: 25 sierpnia 2010 19:03
Komentarze
+4
#
Paweł_
2012-10-19 13:47
Coś tu się kupy nie trzyma. Gdzie na diagramie jest fabryka Komputerów? Rozumiem, że wydajKomputer to metoda fabrykująca, czy tak?
Odpowiedz | Odpowiedz z cytatem | Cytować
+5
#
pio
2013-12-12 10:19
dołączam się do poprzednika... teoria swoją drogą a grafiki nieprawidłowe... niestety
Odpowiedz | Odpowiedz z cytatem | Cytować
+5
#
alfabetyzm
2014-09-23 10:51
Wszystko się zgadza, może tylko nie jest intuicyjne dla osób zaczynających przygodę z programowaniem. W tekście wyraźnie jest napisane: "Wzorzec ten łączony jest z metodą fabrykującą." Nawet link został podany do wzorca metody fabrykującej. Tak więc by w pełni zrozumieć przykład należy niejako połączyć sobie w spójną całość oba te wzorce. A że artykuł opisuje fabrykę abstrakcyjną to normalnym jest, że w jej reprezentacji graficznej nie ma metody wytwórczej, która jest osobnym wzorcem. Przykład mógłby zawierać tylko elementy wzorca fabryki abstrakcyjnej ale byłby mniej "życiowy" a przez to zrozumiały. Ergo byłby słabym przykładem.
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz