C# WinForms uygulamasının test ve bakımını daha kolay tutmak için Pasif Görünüm kalıbını öğreniyorum.Pasif Görünüm'de etkinlikleri uygulamak için iyi bir yol nedir?
Şimdiye kadar çok iyi çalıştı, ancak şimdi Olaylarını uygulamak için daha iyi bir yol olup olmadığını merak ediyorum (ve bunları test edilebilir halde tutmak). Bu neye benziyor (kodun atlanması bu örnekle ilgili değil). Temel olarak ne arıyorum Arıyorum olayları hem de sunum yapan ve formda çengel atlamak için bir yol varsa, ben sunum yapan tüm iş yapmayı tercih ederim.
Bence şöyle görünür:
public interface IApplicationView
{
event EventHandler Find;
}
Benim sunum şöyle görünür:
public partial class Form1 : Form, IApplicationView
{
private ApplicationPresenter _presenter;
public event EventHandler Find = delegate {};
public Form1()
{
InitializeComponent();
_presenter = new ApplicationPresenter(this);
HookupEvents();
}
private void HookupEvents()
{
searchButton.Click += Find;
}
}
teşekkür:
public class ApplicationPresenter
{
private IApplicationView _view;
private IApplicationDomain _domain;
public ApplicationPresenter(IApplicationView view) : this(view, new ApplicationDomain()) {}
public ApplicationPresenter(IApplicationView view, IApplicationDomain domain) {
_view = view;
_domain = domain;
HookupEventHandlersTo(view);
}
private void HookupEventHandlersTo(IApplicationView view)
{
view.Find += delegate { FindAction(); };
}
public void FindAction()
{
// ...
}
}
Benim WinForm gibi görünüyor!
Sana yardım edemem ama sorduğun şeyler ilginç görünüyor. Uygulamayı denediğiniz tekniği açıklayan en sevdiğiniz çevrimiçi kaynağa yönlendirebilir misiniz? –
@Jay - "Model View Presenter" ın hızlı bir Google araması, ihtiyacınız olan tüm bilgileri size vermelidir. – Josh
@Jay Martin Fowler, Passive View tasarım modelini MVP modelinden emekli ve iki yeni haline ayırdığında tasarladı. Pasif Görünüm bunlardan biri olduğunda, bkz. Http://martinfowler.com/eaaDev/PassiveScreen.html – devghost