2009-05-22 6 views
0

MVPパターンを使用すると、ViewクラスまたはPresenterクラス内にうまく収まらないメソッドやメンバが出てくることがよくあります。どんな機能がどのクラスにあるのかを判断するのに使いますか?私はMVPには比較的新しいので、私をユーモアしてください。MVPのメソッドとメンバを定義するために使用する規則

TIA。

+0

MVCではありませんか? –

+1

@Vinegar:彼はModel View Presenterを意味すると思う(http://en.wikipedia.org/wiki/Model_View_Presenter) –

答えて

4

MVPのパッシブビューバリアントを好む傾向があるので、これは私にとっては問題ではありません。受動的なビューパターンでは、Viewはプレゼンターへの単純な割り当てよりも複雑なものをかなり委譲します。

あなたはこのようになりますパターンで羽目になる:あなたは、フォーム上のデータグリッドを持っている場合のみ、トリック部分がある

public class MyView: IView 
{ 
    private MyPresenter Presenter; 

    private OnEvent() 
    { 
     Presenter.DoSomething(); 
    } 

    public string MyProperty 
    { 
     get{ return UIControl.Property;} 
     set{ UIControl.Property = value} 
    } 
} 

public interface IView 
{ 
    public string MyProperty{ get; set;} 
} 

public class MyPresenter 
{ 
    private IView view; 

    public void DoSomething() 
    { 
     ... 
     view.MyProperty = something; 
    } 
} 

。これらは、パッシブビューパターンに適合させるために多くの作業を必要とします。

1

これは、UIの操作がどれだけ進んでいるかにかかっています。メソッドが個々のコントロールへの直接的なアクセスを多く含む場合、おそらくそれはプレゼンターに属します。それ以外の場合はビューに属します。目標は、ビューと現在の間の相互作用を、ソフトウェアの設計を満たすために必要な最小限に抑えることです。

あなたのUIを変更することを決めた場合、あなたが心配する必要はすべてがSetListTitle UpdateWithListがない実装されてその後

Public Sub UpdateWithList(MyList as AList, View as AView) 
    Me.SetListTitle MyList.Name 
    For I = View.MyListStart to View.MyListEnd 
    Me.AddListItem MyList(I) 
    Next I 
    Me.ShowListAddBUtton 
    Me.ShowListDelButton 
End Sub 

以下のように例えば

Presenter.SetListTitle MyList.Name 
For I = View.MyListStart to View.MyListEnd 
    Presenter.AddListItem MyList(I) 
Next I 
Presenter.ShowListAddBUtton 
Presenter.ShowListDelButton 

がプレゼンターに配置する必要があり、AddListItem、

関連する問題