Я начал оборачивать голову вокруг всего шаблона 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; }
}
Вид
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; }
}
}
Ведущий
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;
}
}
Итак, что я должен реализовать в List<People> ListOfPeople
получателе View, а также как я должен вызывать Presenter's UpdateView()
?
И вообще, какие дополнительные методы Presenter было бы интересно иметь для достижения MVP Пассивное представление и Контролирующий контроллер соответственно?
Любые советы, обзоры стилей кода или мнения будут искренне оценены.Большое спасибо заранее.