Słyszałem niezliczoną ilość razy o pułapkach Singletonów / globali i rozumiem, dlaczego tak często się im nie podobają.
Nie rozumiem, czym jest elegancka, nieuporządkowana alternatywa. Wydaje się, że alternatywa dla korzystania z singletonów / globałów zawsze polega na przepuszczaniu obiektów o milion poziomów w dół przez obiekty silnika, aż dotrą one do obiektów, które ich potrzebują.
Na przykład w mojej grze wstępnie ładuję niektóre zasoby, gdy gra się uruchamia. Zasoby te są wykorzystywane dopiero później, gdy gracz porusza się po menu głównym i wchodzi do gry. Czy mam przekazać te dane z mojego obiektu gry do mojego obiektu ScreenManager (pomimo faktu, że tylko jeden ekran faktycznie dba o te dane), a następnie do odpowiedniego obiektu ekranu i gdziekolwiek indziej?
Wydaje się po prostu, że handluję danymi o stanie globalnym w celu wstrzykiwania zaśmieconej zależności, przekazując dane do obiektów, które nawet nie dbają o dane, z wyjątkiem celu przekazania ich do obiektów potomnych.
Czy to przypadek, w którym Singleton byłby dobrą rzeczą, czy jest jakieś eleganckie rozwiązanie, którego mi brakuje?