Proxies are the one who brings external data to the system. So managing the states in proxies should not be proxies duty. You could manage states in mediators instead.
I think it will depend on the logic of your custom components. If a component has a lot of stuff to interact with, sometimes it is better to isolate it and create a mediator that deals with all the interactions and notify to a command if you need more complex logic.
I got started a few days ago with PureMVC and so far, I think it is pretty straight forward. I see it like this:Components
Visual part, user interacts with it. Every interaction dispatches an event WHICH a mediator can handle. If this component have several ways to interact with, then it would be probably a better choice to create a mediator for this component, otherwise you could always use the component's parent mediator.Mediator
These are the ones responsible to handle interactions between the user and a component. A component does not know a mediator exists, only the mediator knows the component exist. Mediators could retrieve. You could handle lightweight logic in mediators, but heavier logic, you shall delegate this to a command.Command
Well, I see these as literal "commands" you call for a certain action. For example, I have an application which have actions like: AddClient, EditClient. I usually connect one command to a proxy. The command retrieves the proxy to call a remote object, save client to database, edit client info, etc.
Commands for me are like a bridge between Mediators and Proxy. I don't like the idea of retrieving Proxys directly from Mediators, I like using Commands instead. A command for each action.Proxies
These guys are brings the fun to the application. they load data, query local db (AIR), remote objects, load assets, etc. And pass it on to the command in case you need to do some logic before pass it to the mediator.
I'd love and really appreciate someone can correct myself if I didn't get something straight, but so far, this is how I understand PureMVC.Edit: Sorry echo_bach, but in your case what I'd do is, create mediators for complex components, to deal with their interactions as custom as I could, giving your application even more flexibility.
Handle states in proxy??? Nah, you can do this in mediators. so if your <mx:Application> have several states, you might want to create a "ApplicationMediator", which you register in the startup command.
A good practice would be, make StartupCommand a MacroCommand, and then in this MacroCommand, you add two subcommands: "SetupViewCommand" and "SetupModelCommand".
In SetupModelCommand you register the proxies you will be using and in the SetupViewCommand you register the mediators, which is a perfect place to register the ApplicationMediator.
If you need a clear example of this, you can check this PDF: http://puremvc.org/component/option,com_wrapper/Itemid,174/