我在使用消极观点的几种WinForms应用中采用了MVP模式。 我实施了一个包含财产和代表的界面,其形式是“行动与建议”;T >and Func< T > 以具体观点将“倡议”活动进行联网,并召回来。
我即将启动一个新项目,对网上模式的研究很少,包括这里模式的许多例子,并指出所有使用活动者都通知发言者。
我没有真正理解为什么在这种情况下会发生事件,因为我认为只有一个发言者。
我的问题是,为了保持这种一致性,这是的。 框架网利用事件,或出于我看不到的其他一些原因?
这里是我使用的模式的三边例子:
public interface IViewAbstraction
{
public ModelData ModelData { set; }
public Action<ModelData> ModelDataChangedCallback { set; }
}
public class SomeWinForm : Form, IViewAbstraction
{
private Action<ModelData> modelDataChanged;
private ModelData model;
public ModelData ModelData
{
set { /* when this property changes, update UI */ }
}
public Action<ModelData> ModelDataChangedCallback
{
set { modelDataChanged = value; }
}
private void OnSomeWinformsEvent(EventArgs args)
{
if (modelDataChanged == null) throw new Exception();
modelDataChanged(model);
}
}
public class Presenter
{
private readonly IViewAbstraction view;
private readonly IDataLayerAbstraction dataLayer;
public Presenter(IViewAbstraction view, IDataLayerAbstraction dataLayer)
{
this.dataLayer = dataLayer;
this.view = view;
this.view.ModelDataChangedCallback = OnModelChanged;
this.view.ModelData = dataLayer.GetData();
}
private void OnModelChanged(ModelData data)
{
// validate and save data.
}
}