Often "singletons" are problematic for testing, so with my next game I'm trying my best to avoid them. But there is bunch of data (configuration or game state information) that different parts of my game require to function. So far I've used events (publish/subscribe) to pass around for example keyboard/touch actions.
Is it a bad idea to try to do the same with configuration/game state? So for example user changes some configuration parameter and instead of all those that need it doing something like ConfigurationSingleton.getParam("someparam")
my event handler would call all those interested in param changes with SomeSubscriber.paramChanged("someparam", "new value")
.
How do you usually make available this kind of "global state/configuration" data in games?