2 votes

Est-il possible d'instancier des présentateurs dans Main en utilisant l'approche MVP ?

Je voulais utiliser une approche de type "présentateur d'abord" (le présentateur s'attache à sa vue et à son modèle dans le constructeur en utilisant l'injection de dépendances via l'appel au constructeur).

Mon formulaire est un MainForm unique contenant deux contrôles utilisateur qui ont chacun leurs propres présentateurs, mais partagent le modèle, donc je crée tous les présentateurs dans Main, en passant dans le contrôle utilisateur pertinent au présentateur en ayant une propriété qui expose ces contrôles de FormMain, et en passant dans une seule instance du modèle à tous les présentateurs.

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

IDocumotiveCaptureView view = new DocumotiveCaptureView(); //this is the MainForm
IDocumentModel model = new DocumentModel(); //single model
IDocumotiveCapturePresenter Presenter = new DocumotiveCapturePresenter(view, model); //MainForm's presenter
IControlsPresenter ControlsPresenter = new ControlsPresenter(view.ControlsView, model); //ControlsPresenter - attached to the user control via view.ControlsView
IDocumentPresenter DocumentPresenter = new DocumentPresenter(view.DocumentView, model);//DocumentPresenter - attached to the user control via view.DocumentView)

Application.Run((Form)view);                                                         
}

Quelqu'un peut-il voir quelque chose d'intrinsèquement mauvais ou mauvais dans cette approche ? Je sais que cela peut être subjectif, mais je suis très novice en matière de MVP et j'aimerais avoir un retour d'information.

3voto

Johann Gerell Points 10649

Si ça marche pour vous, alors bien sûr, c'est bon. Le MVP n'est pas une religion. Il n'est même plus considéré comme un modèle unique. Les deux interprétations les plus populaires semblent maintenant être la vue passive et le contrôleur superviseur.

La méthode Main dans votre cas est votre composition Racine (cherchez toutes les réponses de Mark Seeman) et c'est un excellent endroit pour faire ce que vous faites. Mais ce n'est pas le seul endroit pour le faire.

Pour plus de MVP dans WinForms, voir Modèle-Vue-Présentateur dans WinForms

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X