Bonjour tout le monde,

Je me penche depuis quelques temps sur le pattern MVP.
J'ai bien saisi les idées générales:

Le presenter s'abonne et réagit aux évènements de la vue à laquelle il est associé
Lors de ces évènements il fait executer des méthodes du modèle


En revanche avec tout ce que j'ai lu sur le sujet, je me suis quelque peu perdu.

Dans le modèle on retrouve les services (DAO,...) et le ou les objets métiers qui sont affichés dans la vue. Par exemple pour un modele de commande, dans la classe CommandeModel on retrouve une instance de Commande et une instance implémentant l'interface ICommandeDAO. Ceci est exact?

Cependant, dans le cas classique d'un LoginPresenter qui s'occupe de l'identification d'un utilisateur. LoginPresenter contient un LoginModel qui, quant à lui, contient une IDAOUser ET un user. Est-ce toujours exact?

Mais ou conserve-t-on ce user un fois qu'il est connecté? Car à partir de cet instant ce n'est plus LoginPresenter qui a la main, mais un autre presenter. Je ne vois pas l'objet qui pourrait le contenir. Et comme je ne suis pas un grand amateur des classes statiques, j'aimerais éviter de le stocker dans une variable statique d'une classe statique.

Cette dernière contrainte, me "complique" quelque peu la "tache".

Donc comment, et ou, stockez vous les données "globales" de ce genre d'application?
J'aimerais aussi savoir comment vous faites le lancement de l'application, c'est à dire: ou instanciez-vous le modèle? dans la méthode main, dans le constructeur de Presenter,...

Ainsi que la façon dont vous gérez la navigation d'un presenter à l'autre, puisque dans mon cas plusieurs instances de presenter (CommandePresenter, LigneCommandePresenter,...) peuvent exister en même temps mais bien entendu une seule est "active" à un instant t.

Merci pour vos réponses éclairées.