Задолбался я спорить с китайцами по поводу Modal-View-Presenter. Они мне настойчиво утверждают, что это MVP:
Да, основные абстрации (View, IView и Presenter) на месте, но то как они работают сданными меня сильно напрягает. Они "напрямую" биндят данные из коллекции на контролы через BindingSource. Может быть тут вообще Presenter лишний? таким образом они пытаются синхронизировать данные в нескольких View.
public partial class View : UserControl, IView
{
Presenter _presenter;
BindingSource _bindingSource;
//Основной источник головной боли
public BindingSource BindingSource
{
get { return _bindingSource; }
set
{
_bindingSource = value;
SetUpControl();
}
}
internal Presenter Presenter
{
get { return _presenter; }
set {
_presenter = value;
_presenter.View = this;
}
}
//внаглую биндимся на данные в коллекции
private void SetUpControl()
{
ageTextBox.DataBindings.Add("Text", _bindingSource, "Name", true,
DataSourceUpdateMode.OnPropertyChanged);
}
}
public class Presenter
{
IView _view;
BusinessItems _items;
internal IPresenterControl View
{
get { return _view; }
set { _view = value; }
}
//типа деаем установку данных во вью.
public BusinessItems Items
{
get { return _items; }
set
{
_items = value;
BindingSource source = new BindingSource();
source.DataSource = _items;
_view.BindingSource = source;
}
}
}
public interface IView
{
System.Windows.Forms.BindingSource BindingSource { get; set; }
}
16.08.07 10:21: Перенесено модератором из '.NET' — Хитрик Денис
16.08.07 10:50: Перенесено модератором из '.NET' — TK
Здравствуйте, mrUmka, Вы писали:
U>Задолбался я спорить с китайцами по поводу Modal-View-Presenter. Они мне настойчиво утверждают, что это MVP:
U>Да, основные абстрации (View, IView и Presenter) на месте, но то как они работают сданными меня сильно напрягает. Они "напрямую" биндят данные из коллекции на контролы через BindingSource.
А как ты себе представляешь это не "напрямую"? Так же непонятно, как это всё используется? Правильно ли я понимаю, что про View и IView никто кроме презентера и какой-нить фабрики не знает и обработка данных происходит над коллекцией BusinessItems _items?
U>Может быть тут вообще Presenter лишний? таким образом они пытаются синхронизировать данные в нескольких View.
Тогда у презентера должно быть несколько View, а этого в примере не видно…
... << RSDN@Home 1.2.0 alpha rev. 717>>
Now playing: «Тихо в лесу…»
Здравствуйте, mrUmka, Вы писали:
Кто пользуется публичным set-свойством Items у класса Presenter, неужто Model, которая не должна знать ни о Presenter, ни о View?
Каким образом реализуется работа нескольких View, отображающих данные одной модели? В примере Presenter работает только с одним View. Неужто и тут всесильная Model дергает setter Items для каждой пары Presenter-View, которые хотят с ней работать?
Если п.1-2 угадал, то это какой-то антиMVP.