Uwaga: pytania znajdują się na końcu postu.
Przeczytałem inne wątki stackoverflow dotyczące Abstract Factory vs Factory Method . Rozumiem intencję każdego wzoru. Nie mam jednak jasności co do definicji.
Factory Method definiuje interfejs do tworzenia obiektu, ale pozwala podklasom zdecydować, które z nich mają zostać utworzone. Metoda fabryczna pozwala klasom odroczyć tworzenie instancji do podklas.
Z kolei fabryka abstrakcyjna zapewnia interfejs do tworzenia rodzin powiązanych lub zależnych obiektów bez określania ich konkretnych klas.
Abstract Factory wygląda bardzo podobnie do metody fabryki . Narysowałem kilka klas UML, aby zilustrować mój punkt widzenia.
Uwaga:
- Diagram pochodzi z www.yuml.com, więc nie są one idealnie zorientowane. Ale to darmowa usługa :).
- Diagramy mogą nie być doskonałe. Wciąż uczę się wzorców projektowych GoF .
Metoda fabryczna:
Abstract Factory (tylko 1 członek):
Abstract Factory (więcej członków):
Pytania:
- Jeśli Fabryka Abstrakcji ma tylko jednego twórcę i jeden produkt, czy nadal jest to wzorzec Fabryki Abstrakcji ? (interfejs do tworzenia rodzin)
- Czy kreator betonu Factory Method można utworzyć z interfejsu, czy też musi on pochodzić z klasy? (klasy odraczają instancje do podklas)
- Jeśli Fabryka Abstrakcji może mieć tylko jednego twórcę i jeden produkt, to czy jedyną różnicą między Fabryką Abstrakcji a Metodą Fabryczną jest to, że twórcą pierwszej jest Interfejs, a twórcą drugiej jest Klasa?