Различия в реализации между MVP Passive View и Supervising Controller для коллекций

Я начал обдумывать весь паттерн MVP , и, несмотря на то, что у меня все хорошо с отдельными объектами, когда дело доходит до этого, становится все труднее в коллекции.

Итак, предположим, мы создаем простое приложение WinForms, которое состоит из DataGrid внутри формы, причем модель данных представляет собой простую коллекцию вещей, где такие вещи имеют набор свойств, а View будет фактически отображать их:

Модель

public class Person
{
    public string Name { get; set; }
    public DateTime Birth { get; set; }
    public bool IsCool { get; set; }
}

public class People
{
    public List<Person> Persons { get; set; }
}

View

public interface IPeopleView
{
    List<People> ListOfPeople { get; set; }
}

public partial class PeopleViewImpl : Form, IPeopleView
{
    private DataGridView _grid = new DataGridView();

    public PeopleViewImpl()
    {
        InitializeComponent();
    }

    // Implementation of IPeopleView
    public List<People> ListOfPeople
    {
        get { return /* TODO */; }
        set { _grid.DataSource = value; }
    }
}

Presenter

public class PeoplePresenter
{
    private People _model;
    private IPeopleView _view;

    public PeoplePresenter(People model, IPeopleView view)
    {
        _model = model;
        _view = view;
    }

    void UpdateView()
    {
        _view.ListOfPeople = _model.Peoples;
    }
}

Итак, что я должен реализовать в получателе View List ListOfPeople , а также как мне вызвать Presenter's UpdateView () ?

И вообще, какие дополнительные методы Presenter были бы интересны для достижения MVP Passive View и контролирующего контроллера соответственно?

Любой совет, код будут искренне признательны за обзор стиля или мнение. Заранее большое спасибо.

5
задан Nano Taboada 3 October 2011 в 06:00
поделиться