I've got a few questions off this, though.
1. In a fully decoupled environment, everything should request objects through the facade, Mediators -> Facade -> Proxies/Mediators. Commands -> Facade -> Proxies/Mediators. For performance reasons (games), it should be ok to at least cache the result of the facade get, right? Something like
var cachedStageMediator:StageMediator
in another Mediator?2. Again, for performance, there are always going to be Singleton Mediators/Proxies. For instance, the StageMediator in my system is responsible for emitting resize messages, and also contains our window/viewport system. It's general and won't be changed, certainly within the same project lifecycle, so it could make sense to expose a public static singleton accessor instance().
3. Likewise, singleton VOs seem like they could be ok with static accessors/variables, especially given they aren't necessarily connected to an MVC Proxy.
4. If I go the 'pure' path, and design VOs first, followed by the View Components that display them, before building the plumbing into Mediators/Proxies, accessing everything via the facade, what objects do you typically build VOs for? i.e. Do you just build VOs for marshalling data around between the various MVC classes, or do AS3 programmers tend to use them in place of traditional data structures defined as classes?
I guess what I'm really trying to work out, is do you tend to use the MVC as scaffolding to link up the views with their data, with the commands acting as a bit of glue, whilst leaving the rest of the app/game to manage their systems internally. i.e. The whole app/game could be in a single Mediator GameMediator, with custom drawing etc, with traditional data structures kept as an internal detail, with the rest of the HUD, or title screen, or high scores etc as their own Mediators.
Cheers,
Shane