Где следует Посмотреть & Presenter рождаться

голоса
5

Я полностью понимаю шаблон MVP, но я все еще борюсь, чтобы увидеть, где взгляды и ведущие инстанцируются. Я видел несколько примеров, когда предъявитель в обновленных представлении, но это правильно. После прочтения сообщения в блоге Джереми Миллера о связи между видом и Presenter он имел функцию на Presenter присоединять выступающее мнение.

Мой вопрос состоит в следующем: Где должны взгляды и презентеры быть созданы? Кроме того, где в WinForms и WebForms.

Задан 09/12/2008 в 23:04
источник пользователем
На других языках...                            


3 ответов

голоса
3

В WebForms, страница получает экземпляр по запросу. Поскольку эта страница является видом, и вы не можете контролировать порядок исполнения, это вид, который должен зарегистрировать себя с ведущим

Ответил 09/12/2008 в 23:15
источник пользователем

голоса
2

В Winforms я инстанцирует мнение по мере необходимости (например , в mainметоде, или в способе на другой ведущий, но везде , где имеет смысл на самом деле). Вид затем создает и регистрирует себя с новым экземпляром ведущего.

Это делает имеющие несколько точек зрения использовать ту же логику презентаторов легко и щиты пользователи моей точки зрения из моего конкретного архитектурного решения использовать MVP.

Ответил 09/12/2008 в 23:28
источник пользователем

голоса
1

Во-первых, хороший вопрос. Во-вторых, это не имеет значения, много. Мое личное предпочтение почти всегда телеграфировать Presenter и Просмотр в представлении.

Сравните этот сценарий:

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

Как вы можете видеть, что последние имеют гораздо меньшее дублирование кода. Конечно, это глупо дублирование или вы могли бы сказать, что вы можете переместить общие функциональные возможности к общей функции, но вы получите точку, это просто пример .. Вот когда вы будете иметь такой же вид, быть обработан на несколько частей вашего приложения.

Кроме того, преимущество зрения зная Presenter является то, что вам нужно всего лишь ссылаться Presenter на ваш взгляд проект, так что вы можете повторно использовать один и тот же Presenter в различных приложениях пользовательского интерфейса. В противном случае вам нужно будет ссылаться на каждый вид проекта в Presenter ..

Но что более важно, чтобы увидеть , как различные модели подходят вашему делу. Честно говоря, есть больше возможностей даже. Смотрите этот дубликат вопрос.

Ответил 18/01/2013 в 00:15
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more