Zastanawiałem się więc, jak monolitycznie spędzają czas moje zajęcia. Na przykład w metodzie Characterklasy Jumpmoż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 Characterklasa 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 Jumpkodu i skomentować go lub cokolwiek innego.
Więc ... myślałem ...
Co jeśli zamiast tego istniała jakaś AudioSystemklasa i wszystko, co zrobiła, to subskrybować losowe wydarzenia, którymi interesują się inne klasy. Na przykład Characterklasa może mieć Jumpedzdarzenie (chyba też statyczne), które jest wywoływane w Characterklasie w metodzie. Następnie Characterklasa nie wiedziałaby nic o małym efekcie dźwiękowym, który jest odtwarzany, gdy postać skacze. AudioSystemBę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?