Wpis z mikrobloga

#programowanie #java #csharp
Załóżmy że robimy grę w której tworzymy różne rasy postaci. Każda rasa jest reprezentowana przez osobną klasę która implementuje jakiś interfejs. Robię sobie fabrykę do tworzenia postaci, mam więc listę wszystkich nazw klas. Czy istnieje jakiś wzorzec projektowy / rozwiązanie by w sytuacji gdy dodaję kolejną klasę wymusić aktualizację listy? Chciałbym to zrobić bez korzystania z refleksji (chyba, że to w jakiś fany sposób usprawni robotę)
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@nocneszczury: Mógłbyś rozwinąć problem? Masz listę, która przechowuje interfejsy, tak? I jak tworzysz nową klasę, to chcesz, by niezależnie, jaka była, jeśli dziedziczy z tego interfejsu, automatycznie nowo tworzony obiekt dopisał się do listy?
  • Odpowiedz
@Radeg90: W sumie tak, mam listę która przechowuję nazwy klas które implementują jakiś interfejs. Gdy dodam koleją klasę która go implementuje, ale nie dodam do listy dostanę np wyjątek.

@asdasdce2w: Observer zawsze spoko, ale nie widzę tutaj zastosowania (chyba, że dana klasa dziedziczyła by po jakiejś bazowej i robilibyśmy jakieś większe kombinacje w konstruktorach klasy bazowej).
  • Odpowiedz
Każda rasa jest reprezentowana przez osobną klasę


@nocneszczury: Może w tym momencie jest problem? Może klasa powinna reprezentować rasę (w sensie koncepcję rasy), do tego factory zwracające "rasy" czyli instancje klasy?
Nie próbowałem w praktyce, za każdym razem robiłem w tym stylu co Ty... ale w sumie nie wiem jakie korzyści wynikają z podejścia "jedna rasa = jedna klasa".
  • Odpowiedz
  • 0
@kao3991
Dobrze gadasz.

@nocneszczury
Słuchaj kolegi. Nie ma sensu robić osobnej klasy dla każdej rasy. W ogóle, ja to bym definicje ras (i innych cech) wczytywał z plików. Wtedy mógłbyś modyfikować grę bez potrzeby przekompilowywania.
  • Odpowiedz