2

我想使用“演示者优先”的方法(演示者通过构造函数调用使用依赖注入将自己附加到构造函数中的视图和模型)。

我的表单是一个 MainForm 包含两个用户控件,每个控件都有自己的演示者,但共享模型,因此我在 Main 中创建所有演示者,通过具有从 FormMain 公开这些控件的属性将相关用户控件传递给演示者,并将模型的单个实例传递给所有演示者。

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);                                                         
}

任何人都可以在这种方法中看到任何本质上不好或错误的东西吗?我意识到这可能是主观的,但我对 MVP 很陌生,希望得到一些反馈。

4

1 回答 1

3

如果它适合你,那当然没问题。MVP不是一种宗教。它甚至不再被视为单一模式。现在最流行的两种解释似乎是被动视图和监督控制器。

在您的情况下,主要方法是您的 作文根(搜索 Mark Seeman 的任何答案),它是一个很好的地方来做您所做的事情。但这不是唯一的地方。

更多 WinForms MVP,请参阅 WinForms 中的 Model-View-Presenter

于 2012-09-17T02:25:21.957 回答