私はMVPパターンを学んでいますが、まだ疑問があります。MVP:サードパーティのコントロール、ビューレイヤーに入れることができるロジックの量
Martin Hunter彼のMVC/MVPの概要が書いで:
をMVPで、ビューは、その目的は、ユーザへの提示を提供することに純粋である超薄成分となります。このビューは、ユーザーが作成したイベントをキャッチして処理しますが、対処方法を知っているプレゼンターに直接転送します。
(...)
MVPとビューが発生したイベントをキャッチし、コントローラ(プレゼンター)
に転送しますが、これは、ボタンやテキストボックスと罰金ですが、どのような場合でもっと複雑なコントロールがいくつかありますか? DevexpressのTreeListコントロールのようなサードパーティのコンポーネントを使用しているとします。ユーザーが展開ボタン「+」をクリックしたときにサブノードを作成するとします。任意のパターンを使用していない私はそのようにこれをコーディングすることができます:
private void BeforeExpand_EventHandler(object sender, BeforeExpandEventArgs e)
{
TreeList treeList = sender as TreeList;
MyModelObject nodeObj = e.Node.Tag as MyModelObject;
treeList.BeginUnboundLoad();
//Create sub-nodes depending on nodeObj
treeList.EndUnboundLoad();
}
あなたがそうでBeforeExpandEventArgs、TreeListNode、BeginUnboundLoad()のようないくつかの具体的な行動、などいくつかのビュー・オブジェクトが存在している見ることができるように。その場合、私のViewレイヤーは「極薄」にはなりません。 BeforeExpandEventArgsのようなPresenterオブジェクトに直接渡すことはできません。なぜなら、それはPresenterにいくつかのView要素を与えるためです。
私の質問は次にあります:どのくらいのロジックを表示レイヤーに入れることができますか?たとえば、以下のコードはokですか?
private void BeforeExpand_EventHandler(object sender, BeforeExpandEventArgs e)
{
TreeList treeList = sender as TreeList;
MyModelObject nodeObj = e.Node.Tag as MyModelObject;
treeList.BeginUnboundLoad();
e.Node.Nodes = this.presenter.GetNodes(nodeObj);
treeList.EndUnboundLoad();
}