アサーション
プレゼンターは、ビューとモデルの間の調整を担当します(パッシブビューの実装に従う場合)。
これは次のようになります。
プレゼンターをインスタンス化し、プレゼンターに自分自身を挿入するビュー:
IPresenter presenter;
public View() { presenter = new Presenter(this) }
1つ以上のビューをインスタンス化し、ビューに自分自身を挿入するプレゼンター:
IView1 view1;
public Presenter() { view1 = new View1(this) }
IView1 view1;
IView2 view2;
public Presenter() { view1 = new View1(this); view2 = new View2(this); }
例
あなたの場合、複数のビューを調整するプレゼンターは次のようになります(疑似):
public class Presenter : IPresenter
{
IView1 view1;
IView2 view2;
public Presenter()
{
view1 = new View1(this);
view2 = new View2(this);
}
private WireViewEvents()
{
view1.OnButtonClick += HandleButtonClickFromView1;
}
public void HandleButtonClickFromView1()
{
view2.SetSomeData();
view2.Show();
}
この例では、によって発生したイベントがView1
プレゼンターによって処理され、データがに設定されてView2
表示View2
されます。
実装が何であっても、MVPの目標は次のとおりであることに注意してください。
- 関心の分離(UIはドメインロジックから分離されています)。
- 妥当性の向上。
これは、プレゼンターが複数のビューを調整する方法の基本的な例にすぎないことに注意してください。ビューの作成をプレゼンターから抽象化する場合は、作成を別のコンテナーに移動して、プレゼンターがビューを作成し、そのイベントをサブスクライブするために呼び出すことができます。