【发布时间】:2011-11-29 14:39:11
【问题描述】:
我已经开始思考整个 MVP 模式,尽管我对单个对象做得很好,但在集合方面却开始变得困难。
假设我们正在构建一个简单的 WinForms 应用程序,该应用程序由一个表单中的 DataGrid 组成,数据模型是一个简单的东西集合,其中这些东西有一堆属性,视图将实际显示他们:
型号
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 方法会很有趣?
我们真诚地感谢任何建议、代码风格审查或意见。非常感谢。
【问题讨论】:
标签: design-patterns mvp passive-view supervisingcontroller