algorytm.org

Fabryka abstrakcyjna (abstract factory)



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Fabryka abstrakcyjna (abstract factory)
Ocena użytkowników:***** / 27
SłabyŚwietny 
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:
fabryka abstrakcyjna


Diagram odpowiadający załączonemu przykładowi:
fabryka abstrakcyjna - przykład


  • 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
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Kamil DworakC#Visual Studio 2008
.cs
.cs
***** / 8
Jacek WęgorkiewiczC/C++
.cpp
.cpp
***** / 5
Kamil DworakJava
.java
.java
***** / 9
Piotr SynowiecPhp
.php
.php
***** / 1
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 25 sierpnia 2010 19:03
Komentarze
photo
+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ć
photo
+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ć
photo
+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