Fabryka abstrakcyjna to kreacyjny wzorzec projektowy. Służy do tworzenia rodzin powiązanych ze sobą obiektów bez wskazywania ich konkretnych klas w kodzie klienta.
Wzorzec ten odpowiada na pytanie: jak tworzyć zestawy obiektów pasujących do siebie?
Kiedy stosować?
Fabryka abstrakcyjna jest przydatna, gdy aplikacja ma działać z różnymi wariantami obiektów, ale nie powinna zależeć od ich konkretnych implementacji.
Przykład: aplikacja może obsługiwać różne motywy interfejsu:
- motyw jasny,
- motyw ciemny.
Każdy motyw ma własne przyciski, pola tekstowe i okna dialogowe. Fabryka abstrakcyjna pozwala tworzyć elementy zgodne z wybranym motywem.
Uproszczony przykład
GUIFactory
├── LightThemeFactory
└── DarkThemeFactory
Kod klienta korzysta z interfejsu GUIFactory, a nie z konkretnych klas LightButton czy DarkButton.
Do jakiej grupy należy?
Fabryka abstrakcyjna należy do wzorców kreacyjnych, ponieważ dotyczy tworzenia obiektów.
Nie jest wzorcem strukturalnym, bo jej głównym celem nie jest budowanie struktury z klas i obiektów, lecz oddzielenie procesu tworzenia obiektów od ich użycia.
Na egzaminie
Jeżeli w odpowiedziach pojawia się Abstract Factory, należy kojarzyć ją z grupą wzorców kreacyjnych.