Хочу понять MVP паттерн на практике, но, кажется, не все понимаю правильно, поэтому простой вопрос: на форме есть кнопка и лейбл, так же есть некая переменная-счетчик. При нажатии кнопки счетчик должен увеличиваться на 1, а текст надписи должен меняться на значение счетчика. Моя реализация выглядит так:
Form1
public partial class Form1 : Form
{
Model _model;
View _view;
Presenter _presenter;
public Form1()
{
InitializeComponent();
_model = new Model();
_view = new View(label1);
_presenter = new Presenter(_view, _model);
button1.Click += (s, e) =>
{
_view.RefreshView();
};
}
}
Model
class Model
{
private int count = 0;
public void IncCount()
{
count++;
}
public int GetCount()
{
return count;
}
}
View
delegate void ViewChanged();
class View
{
public event ViewChanged OnViewChanged;
private Label _label;
public View(Label label)
{
_label = label;
}
public void RefreshView()
{
OnViewChanged();
}
public void ChangeLabel(string data)
{
_label.Text = data;
}
}
Presenter
class Presenter
{
View _view;
Model _model;
public Presenter(View view, Model model)
{
_view = view;
_view.OnViewChanged += _view_OnViewChanged;
_model = model;
}
private void _view_OnViewChanged()
{
_model.IncCount();
_view.ChangeLabel(_model.GetCount().ToString());
}
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости