Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Factory Method a Abstract Factory Method

Ostatnio zmodyfikowano 2020-06-24 20:24
Autor Wiadomość
Ashey
Temat założony przez niniejszego użytkownika
Factory Method a Abstract Factory Method
» 2020-06-24 17:11:51
Od niedawna uczę się wzorców projektowych i natrafiłem na mały problem, mianowicie nie potrafię zrozumieć różnicy między metodą wytwórczą a fabryką abstrakcyjną, rozumiem jak oby dwie działają, ale wydaje mi się to jednym i tym samym. Zarówno metoda wytwórcza może dzielić się na konkretne fabryki dziedziczące z abstrakcyjnej, jak i fabryka abstrakcyjna gdzie to wydaje się obowiązkowe. Wyczytałem gdzieś, że fabryka abstrakcyjna ma tworzyć rodziny obiektów ale przez to mam rozumieć, że jeden obiekt składający się z innych czy jak?
Proszę o takie bardzo ogólne wyjaśnienie zasad i różnic w samym działaniu.

Dodatkowo. Załóżmy, że ktoś robi grę z gatunku rts i pisze system ras w grze, tj. Orki, Ludzie, Elfy itd.
Tworzy abstrakcyjne klasy wojownik, pracownik itd.
Tworzy od nich osobne klasy dla jednostki każdej z ras.
I na końcu tworzy fabrykę abstrakcyjną i jej osobne fabryki dla każdej z ras, które zajmują się tworzeniem obiektów jednostek w danej rasie.
Klient aby wytworzyć jednostkę, musi wybrać rasę oraz rodzaj jednostki.
Czy taki przykład to fabryka abstrakcyjna czy jeszcze metoda wytwórcza? Spotkałem się z tutorialem, gdzie tak to jest przedstawione i nie widzę tam żadnych rodzin obiektów więc nie wiem, czy autor miał rację a to ja coś źle zrozumiałem, czy materiał był bezużyteczny.
P-177204
jankowalski25
» 2020-06-24 18:08:42
P-177205
DejaVu
» 2020-06-24 20:08:05
A w kontekście tworzenia RTS-a to raczej unikałbym na Twoim miejscu stosowania wzorców projektowych do zarządzania jednostkami. Proste dziedziczenie jest wystarczająco skutecznym rozwiązaniem (ale to w sumie nie nawiązuje do tematu, więc nie będę się rozwijał w tej kwestii).
P-177208
pekfos
» 2020-06-24 20:24:41
I na końcu tworzy fabrykę abstrakcyjną i jej osobne fabryki dla każdej z ras, które zajmują się tworzeniem obiektów jednostek w danej rasie.
Klient aby wytworzyć jednostkę, musi wybrać rasę oraz rodzaj jednostki.
Czy taki przykład to fabryka abstrakcyjna czy jeszcze metoda wytwórcza?
To jest przykład jak nie używać wzorców projektowych. Zacząłeś od wzorca, a potem zacząłeś szukać dla niego zastosowania, czyli kompletnie na opak! Wzorce należy dostosowywać do konkretnych przypadków, albo nie kierować się nimi w ogóle. Myśl o nich jak o przykładach użycia obiektowości w C++. Nauka czegokolwiek w programowaniu powinna prowadzić do pisania kodu, nie sklejania go z przykładów.
Najlepszy opis wzorca znajdziesz w diagramie UML. TL;DR: Metoda wytwórcza = metoda wirtualna, Fabryka abstrakcyjna = klasa abstrakcyjna z interfejsem fabryki, więc po prostu dedykowana klasa do metod wytwórczych.
P-177209
« 1 »
  Strona 1 z 1