私はMVPパターン全体に頭を悩ませ始めました。単一のオブジェクトでうまくやっているにもかかわらず、コレクションに関しては難しくなり始めています。
では、フォーム内の DataGrid で構成される単純な WinForms アプリケーションを設計しているとしましょう。データ モデルは単純なコレクションであり、そのようなものには多くのプロパティがあり、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 メソッドがあれば興味深いでしょうか?
アドバイス、コード スタイルのレビュー、または意見をいただければ幸いです。よろしくお願いします。