Я изучаю пассивный шаблон, чтобы поддерживать мое приложение C# WinForms проще в тестировании и обслуживании.Что такое хороший способ реализации событий в пассивном режиме?
Он работал хорошо до сих пор, но мне интересно, есть ли лучший способ реализовать События, чем я делаю это сейчас (и сохраняя их возможность проверки). Это , как это выглядит (исключая код, не относящийся к этому примеру). В основном то, что Я ищу, если есть способ пропустить подключение событий как в презентаторе , так и в форме, я бы предпочел делать всю работу в презентаторе.
мой взгляд выглядит следующим образом:
public interface IApplicationView
{
event EventHandler Find;
}
Мой ведущий выглядит следующим образом:
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()
{
// ...
}
}
Мой WinForm выглядит следующим образом:
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;
}
}
Спасибо!
Я не могу вам помочь, но то, о чем вы спрашиваете, выглядит интересным. Не могли бы вы указать мне ваш любимый онлайн-ресурс, который описывает технику, которую вы пытаетесь реализовать? –
@Jay - Быстрый поиск Google в «View Viewer Model View» должен предоставить вам всю необходимую информацию. – Josh
@ Джей Мартин Фаулер придумал шаблон пассивного вида, когда он удалил шаблон MVP и разделил его на два новых. Где Пассивный вид является одним из них, см. Http://martinfowler.com/eaaDev/PassiveScreen.html – devghost