Во-первых, хороший вопрос. Во-вторых, это может не иметь большого значения. Мое личное предпочтение - почти всегда подключать Presenter и View в представлении.
Сравните этот сценарий:
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();
}
}
к этому:
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);
}
}
Как вы видите, у последнего гораздо меньше дублирования кода. Конечно, это глупое дублирование, или вы могли бы сказать, что можете переместить обычную функциональность в совместно используемую функцию, но вы понимаете, что это только пример. Именно тогда у вас будет один и тот же вид, который будет создан в нескольких частях вашего приложения.
Кроме того, преимущество View в знании Presenter заключается в том, что вам нужно ссылаться только на Presenter в вашем проекте View, поэтому вы можете повторно использовать один и тот же Presenter в разных приложениях пользовательского интерфейса. В противном случае вам нужно будет ссылаться на каждый проект View в Presenter.
Но что важнее, так это посмотреть, как разные модели подходят для вашего случая. Если честно, даже больше возможностей. Смотрите этот дубликат вопроса.