我正在学习MVP模式并遇到以下问题:
如果我有一个表单(项目MainForm),一个模型(项目模型)和一个演示者,我应该为演示者创建一个新项目还是可以将它放在MainForm项目中?
1)如果演示者必须位于单独的项目中,它显然需要引用MainForm作为它的构造函数,这导致我们遇到第二个问题:
当应用程序在program.cs(在MainForm中)启动时,我需要创建我的演示者:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Presenter presenter = new Presenter(new MainForm()); //Here it is
Presenter.Run();
}
但是,由于演示者是在一个单独的项目中,我不能在没有引用的情况下使用它。但是,已经有一个从演示者到MainForm的引用,所以我无法添加它。
2)如果演示者位于MainForm项目中,程序就可以正常启动,但要使用模型I中的函数必须将MainForm项目的引用添加到Model项目中,我认为这与MVP模式相矛盾。
请告诉我如何正确设计我的口水。
答案 0 :(得分:0)
您的视图和模型应该彼此独立且与Presenter无关。他们可能生活在他们自己的项目中,但在一个简单的程序中可以很好地处理同一项目中的所有内容。
如果您确实希望将它们放在单独的项目中,那很容易完成。包含Program
类的主项目还将包含 Presenter
类。视图(即MainForm
类)和模型将(可能)在他们自己的项目中。
项目的层次结构看起来像这样:
Presenter
类和Program
类(即后者用于程序入口点,Main()
,如您在代码示例中所示)。参考文献包括:
MainForm
类(以及任何其他视图类)换句话说,您可以为主程序项目创建Windows窗体项目,只需删除为此创建的默认Form1
。您可以为视图DLL项目创建一个类库项目,并将Windows Form类添加到MainForm
类的该项目中。