W końcu zacząłem poważnie próbować nauczyć się kilku podstawowych wzorców (bardzo późno w karierze, ale to inna historia), staram się omijać różnice między wzorcem fabrycznym a fabryką abstrakcyjną.
Jakie są kluczowe różnice między tymi dwoma wzorami?
Rozumiem, że Metoda Fabryczna tworzy obiekty poprzez dziedziczenie, a Abstract Factory robi to poprzez kompozycję obiektów, ale z praktycznego punktu widzenia wciąż mam problemy z wizualizacją, w jaki sposób każda z nich działa.
design-patterns
factory-method
Phil.Wheeler
źródło
źródło
new
nie jest to metoda (w niektórych - co prawda powszechnych - systemach obiektowych).Odpowiedzi:
Factory Method jest zwykle podzielone na kategorie według instrukcji switch gdzie każdy przypadek zwraca inną klasę, za pomocą tego samego interfejsu użytkownika root tak, że kod wywołujący nie musi podejmować decyzje dotyczące realizacji.
Pomyśl o fabryce walidatora kart kredytowych, która zwraca inny walidator dla każdego rodzaju karty.
Abstract Factory jest, gdy masz kilka klas fabrycznych beton (nie fabryczne metody) pochodzące z jednego interfejsu, który może wrócić wiele różnych typów z różnych metod.
Pomyśl o menedżerze szachów z inną klasą dla każdego zestawu wariantów zasad.
Fabryka abstrakcyjna, podobnie jak strategia, jest często wybierana przy użyciu metody fabrycznej, ale nie jest konieczne łączenie ich, więc jest to jej własny wzór.
źródło