0

Windowsフォームを使用して.netにMVPパターンを実装する方法を理解したいです。将来的には、作成したパターンを Web 上で使用したいと考えています。

私の問題は、それが正しいかどうかわからないことです。

私がやったことは、複数のビューを添付するプレゼンターです。つまり、添付されているすべてのビューを最初に指定しないと、そのプレゼンターを使用できません。

public class ScorePresenter{
    private IScoreView _scoreView;
    private IClientView _clientView;        

    public ScorePresenter()
    {
    }

    public void AttachView(IScoreView view){
        this._scoreView = view;
    }

    public void AttachView(IClientView view){
        this._clientView = view;
    }

    public void Create(Model model){
        try{
            //create code here                

            this._clientView.Reload();
        }
        catch(Exception ex){

        }
    }

}

public class ClientPresenter(){
    private IClientView _clientView;

    public ClientPresenter(){

    }

    public void AttachView(IClientView view){
        this._clientView = view;
    }
}


public interface IClientView{
    void Reload();
}

public interface IScoreView{

}

利用方法

クライアント フォーム vb.net

Public Class ClientForm
    Implements IClientView

    Private _clientPresenter As ClientPresenter

    Public Sub ClientForm_Load() Handles Me.Load
        Me._clientPresenter = new ClientPresenter()
        Me._clientPresenter.AttachView(Me)
    End Sub

    Public Sub Reload Implements IClientView.Reload
           Reload code here
    End Sub

    Public Sub ScoreButton_Click() Handles ScoreButton.Click
           Dim frmScoreForm as New ScoreForm
           frmScoreForm.MyParent = Me
           frmScoreForm.ShowDialog()
    End Sub

End Class

スコアフォーム vb.net

Public Class ScoreForm
    Implements IScoreView

    Private _scorePresenter As ScorePresenter

    Public Sub ScoreForm_Load() Handles Me.Load
          Me._scorePresenter = new ScorePresenter()

          Me._scorePresenter.AttachView(Me)
          Me._scorePresenter.AttachView(Me._myParent)
    End Class

    Private _myParent as Object
    Public WriteOnly Property MyParent As Object
          Set(value As Object)
               Me._myParent = value
          End Set
    End Property

End Class

このコードでは、クライアント フォームがメイン フォームです。クライアント フォームのスコア ボタンをクリックすると、スコア フォームが表示されます。

スコアフォームでデータを作成または操作すると、クライアントフォームのリロードが呼び出され、クライアントフォームもビュー上のデータを更新します

これでわかるのは、ScorePresenter を単独で使用できないということですよね? それは設計が悪いのでしょうか?はいの場合、私がしたいことを達成する他の方法はありますか?

4

1 に答える 1