Erstens gute Frage. Zweitens, es spielt vielleicht keine große Rolle. Meine persönliche Präferenz besteht darin, Presenter und View fast immer miteinander zu verbinden.
Vergleichen dieses Szenario:
public class SomePresenter
{
public ShowContactView(IContactView view)
{
IContact model = new Contact();
new ContactPresenter(model, view);
view.Show();
}
}
public class AnotherPresenter
{
public ShowContactView(IContactView view)
{
IContact model = new Contact();
new ContactPresenter(model, view);
view.Show();
}
}
public class YetAnotherPresenter
{
public ShowContactView(IContactView view)
{
IContact model = new Contact();
new ContactPresenter(model, view);
view.Show();
}
}
public partial class ContactView : Form, IContactView
{
public ContactView()
{
InitializeComponent();
}
}
dazu:
public class SomePresenter
{
public ShowContactView(IContactView view)
{
view.Show();
}
}
public class AnotherPresenter
{
public ShowContactView(IContactView view)
{
view.Show();
}
}
public class YetAnotherPresenter
{
public ShowContactView(IContactView view)
{
view.Show();
}
}
public partial class ContactView : Form, IContactView
{
public ContactView()
{
InitializeComponent();
new ContactPresenter(new Contact(), this);
}
}
Wie Sie, dass letztere hat viel weniger Code-Duplizierung sehen. Natürlich ist das dumme Vervielfältigung, oder Sie könnten sagen, dass Sie allgemeine Funktionalität in eine gemeinsame Funktion verschieben können, aber Sie bekommen den Punkt, das ist nur ein Beispiel .. Das ist, wenn Sie die gleiche Ansicht in mehreren Teilen Ihrer Anwendung instanziiert haben. Der Vorteil des Views, den Presenter zu kennen, besteht darin, dass Sie Presenter nur in Ihrem View-Projekt referenzieren müssen, damit Sie denselben Presenter in verschiedenen UI-Anwendungen wiederverwenden können. Andernfalls müssen Sie jedes View-Projekt im Presenter referenzieren.
Aber was noch wichtiger ist, ist zu sehen, wie die verschiedenen Modelle zu Ihrem Fall passen. Um ehrlich zu sein, there are more possibilities even. See this duplicate question.
Was ist mit Winforms? – adriaanp