我已经开始思考整个MVP模式,尽管我在单个对象方面做得很好,但在集合方面开始变得困难。
因此,假设我们正在构建一个简单的 WinForms 应用程序,该应用程序由 Form 中的 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;
}
}
那么我应该在 View 的List<People> ListOfPeople
getter 上实现什么以及我应该如何调用 Presenter 的UpdateView()
呢?
通常,为了分别实现 MVP Passive View和Supervising Controller ,有哪些额外的 Presenter 方法会很有趣?
任何建议、代码风格审查或意见将不胜感激。提前非常感谢。