Zastanawiałem się więc, jak monolitycznie spędzają czas moje zajęcia. Na przykład w metodzie Character
klasy Jump
można mieć odniesienie do obiektu z efektem dźwiękowym i odtwarzać to. To samo w sobie jest w porządku, ale jeśli weźmie się pod uwagę fizykę, animację, kolizję itp., Metoda Jump staje się ogromna, a Character
klasa ma wiele zależności od wielu różnych rzeczy. Mimo to może być w porządku. Co jednak, jeśli nie chcemy już odtwarzać dźwięku, gdy postać skacze? Teraz musimy znaleźć ten konkretny wiersz kodu w pomieszanym bałaganie Jump
kodu i skomentować go lub cokolwiek innego.
Więc ... myślałem ...
Co jeśli zamiast tego istniała jakaś AudioSystem
klasa i wszystko, co zrobiła, to subskrybować losowe wydarzenia, którymi interesują się inne klasy. Na przykład Character
klasa może mieć Jumped
zdarzenie (chyba też statyczne), które jest wywoływane w Character
klasie w metodzie. Następnie Character
klasa nie wiedziałaby nic o małym efekcie dźwiękowym, który jest odtwarzany, gdy postać skacze. AudioSystem
Będzie tylko ogromna klasa, że programista mógł wycofać się zahaczyć efekty dźwiękowe z pewnych zdarzeń, które dzieją się w grze dzięki wykorzystaniu imprez statycznych. Następnie, jeśli to ma zbyt duży to może być oddzielone do podklasy, takich jak EffectsAudioSystem
, BackgroundAudioSystem
, AmbientAudioSystem
, et cetera.
Następnie, w opcjach gry, można mieć pole wyboru, aby włączyć lub wyłączyć tego rodzaju dźwięki, a wszystko, co trzeba zrobić, to po prostu wyłączyć ten system za pomocą prostej i pojedynczej flagi boolowskiej. Pomysł systemów można również rozszerzyć na takie rzeczy, jak fizyka, animacje itp., Do tego stopnia, że większość reakcji w grze wynikających z działań gracza jest połączona przez te skomplikowane i oddzielone systemy.
Okej, więc moje pytanie może być trochę niejasne, ale jak to brzmi? Tak naprawdę nigdy nie słyszałem o wielu rozmowach na temat tego rodzaju systemu. To wszystko jest teraz w mojej głowie bez żadnego kodowania, więc być może jest to jedna z tych „dobrych w teorii, ale nie w praktyce” transakcji. Czy ten system działałby z większą grą, czy w końcu mógłby się zepsuć i stałby się jeszcze bardziej bałaganem spaghetti niż oryginalny system?