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