Wzorzec fabryki abstrakcyjnej
Z Wikipedii
Fabryka abstrakcyjna – (ang. Abstract Factory) wzorzec projektowy stosowany w inżynierii oprogramowania pozwalający na enkapsulację grupy metod fabrykujących dotyczących tego samego zagadnienia.
Zazwyczaj fabryka abstrakcyjna jest budowana w postaci interfejsu. Następnie (w oprogramowaniu klienta) tworzymy konkretne implementacje fabryki. Konkretne obiekty tworzymy poprzez wywołanie metody z interfejsu (a nie z implementacji). W ten sposób od implementacji fabryki zależny jest tylko fragment kodu tworzący tę fabrykę. Fabryka pozwala na tworzenie zestawów obiektów dopasowanych do konkretnych zastosowań (np. różnych platform) przy czym kod posługujący się utworzonymi klasami można pozostawić bez zmian. Każda z konkretnych fabryk produkuje odmienny zestaw klas, ale zawsze posiadają one pewien zdefiniowany zespół interfejsów.
Każda z konkretnych fabryk pozwala na tworzenie kolekcji obiektów zajmujących się realizacją pewnego zagadnienia, takiego jak np. obsługa interfejsu użytkownika. Przykładowo można sobie wyobrazić interfejs klasy tworzącej graficzne symbole liter AbstrakcyjnaFabrykaLiter, która posiada metody fabrykujące znaki na ekranie FabrykacjaA, FabrykacjaB, itd. Tworzone są dwie implementacje tej klasy: liter pisanych kursywą FabrykaPochylonychLiter oraz liter pogrubionych FabrykaPogrubionychLiter. Jeżeli chcemy zapisać słowo możemy na początku utworzyć jedną z fabryk, a potem funkcji przekazać jej interfejs AbstrakcyjnaFabrykaLiter. Funkcja PiszSłowo może wywołać kolejne metody FabrykacjaA, itd., aby utworzyć słowo. Jej kod będzie wyglądać tak samo, niezależnie od tego jaką konkretną fabrykę abstrakcyjną do niej przekazano.
W większości języków programowania niezależnie od tego jaką konkretną implementację fabryki utworzymy, zawsze tworzy ona obiekty posiadające ten sam zestaw interfejsów. Efekt ten uzyskuje się dzięki zastosowaniu dziedziczenia.