Zpo-6-wyk-Slajd9
Abstract Factory: konsekwencje
Zastosowanie tego wzorca pozwala w łatwy sposób zmieniać całe rodziny produktów, zmieniając tylko ich fabrykę. Ponadto, struktura wzorca pozwala łatwo wydzielić warstwę abstrakcji i implementacji, i to zarówno w przypadku fabryki, jak i produktu. Szczegóły implementacyjne obu typów klas są więc niewidoczne dla klienta, co przyczynia się do większej elastyczności systemu.
Dodawanie kolejnych rodzin produktów wiąże się z koniecznością zaimplementowania także nowej fabryki, która będzie dostarczać wspomniane produkty. W ten sposób obiekt fabryki i tworzone przez niego obiekty są związane ze sobą i tworzą hermetyczną całość.
Należy jednak pamiętać, że dodanie do wzorca kolejnego typu Product jest utrudnione, ponieważ wymaga modyfikacji wszystkich istniejących dotychczas fabryk. Dlatego wzorzec ten stosuje się w sytuacjach, w których zestaw produktów jest zamknięty.
Wzorzec ten jest stosowany m.in. w bibliotece Java Swing do reprezentacji tzw. skórek (czyli mechanizmu umożliwiającego szybką zmianę wyglądu interfejsu użytkownika). Wszystkie implementacje okienek, przycisków, list i innych elementów GUI są produkowane przez wybraną fabrykę. Zmiana implementacji tej fabryki oznacza jednoczeną modyfikację zawartości ekranu.