Powodem, dla którego wywoływanie TileHandler w kontekście statycznym nie jest najlepszym możliwym projektem, jest to, że łączy on elementy twojego projektu, które w innym przypadku mogłyby zostać oddzielone.
Jeśli zdecydujesz się na więcej niż jednego TileHandlera w przyszłości, będziesz musiał wykonać wiele pracy, aby uwzględnić tę zmianę.
Jeśli zdecydujesz się usunąć TileHandler, będziesz musiał wykonać wiele pracy, aby uwzględnić tę zmianę.
Załóżmy, że w przyszłości zbudujesz inny poziom / strefę, która obsługuje płytki w inny sposób niż twój obecny TileHandler. Następnie musisz mieć sposób na określenie metody obsługi kafelków, którą chcesz zastosować, lub musisz zadzwonić do innego modułu obsługi.
Jeśli TileHandler został przekazany jako parametr do obiektów, które go wykorzystują, wówczas możesz po prostu przekazać inny raz następnym razem lub ustawić inny moduł obsługi kafelków na obiektach, które go wykorzystają później.
Osobiście uzyskuję dostęp do wielu rzeczy w moich grach XNA ze statycznego kontekstu i zakładam, że nigdy nie będę mieć więcej niż jedną z nich.
Jeśli chcesz ponownie użyć kodu silnika gry w następnej grze, prawdopodobnie będziesz musiał przepisać wiele rzeczy, które obecnie zapisałeś jako statyczne.
W skrócie:
Na korzyść niestosowania kontekstu statycznego:
Przekazywanie obiektów w jak największym stopniu oddziela elementy gry i pozwala na łatwiejszą modyfikację / ponowne użycie ich w bieżących lub przyszłych projektach. Pozwala także nieco łatwiej zarządzać złożonością dużych ilości kodu (pomyśl o setkach statycznych menedżerów w swojej klasie gier, w dużej grze).
Na korzyść statycznego kontekstu:
Deklarowanie i uzyskiwanie dostępu do obiektów ze statycznego kontekstu ułatwia pisanie małych gier, które nie wymagają setek statycznych menedżerów. Upraszcza wiele metod i konstruktorów, nie wymagając jednego lub więcej dodatkowych parametrów, do których dostęp jest uzyskiwany statycznie.