相对较新的模式,让我直接在 WinForms 的上下文中展示一个示例。
我有一个基本的 MVP Passive View 结构,我应该继续使用它:
public partial class UserView : Form, IUserView
{
public event EventHandler Save;
public UserView()
{
InitializeComponent();
new UserPresenter(new UserModel(), this);
}
}
public class UserPresenter
{
public UserPresenter(IUser model, IUserView view)
{
view.Save += (sender, e) => model.Save();
}
}
或者
public partial class UserView : Form, IUserView
{
public event EventHandler Save;
public UserView()
{
InitializeComponent();
new UserPresenter(this);
}
}
public class UserPresenter
{
public UserPresenter(IUserView view)
{
var model = new UserModel();
//assuming I have the logic to bind property values from View to Model
view.Save += (sender, e) => model.Save();
}
}
我的问题是:
User
1) 谁应该知道 model 、 View 或 Presenter的具体实例?
2)在这种情况下会有什么好处?
3)假设我的模型从不依赖于视图。在那种情况下,如果 View 知道 Model 有什么问题?毕竟UserView
是为了呈现UserModel
不是吗?
4)如果Presenter应该只与Model和View的接口交互,那么要调用eventhandler,我model.Save
从Save
哪里得到具体的实例Model
?