This doesn't look like the Singleton pattern. The way I understand it, you're passing an object with references to important game-objects to all of your instances.
If this would be the Singleton pattern, you would have:
Whereas in your case you might have:
It looks basically the same, but it really isn't. If you would want to replace
AudioManager with a new (extended class) like
ExtendedAudioManager, you would hit a wall using the Singleton pattern. Your gateway approach will handle that just fine though.
The drawback of your approach is that you'll have to pass around the
The service locator pattern (proposed by Joe Wreschnig in this thread), looks like a good replacement for your "gateway pattern".
Sometimes it's better to just run with the simple and straightforward method instead of over-designing things though. Especially when it's a small project or a prototype.
Maybe you could make that
gateway some sort of a global variable.. eg.
Game.gateway and run with it.