MVP или нет?
От: mrUmka  
Дата: 16.08.07 03:43
Оценка:
Задолбался я спорить с китайцами по поводу 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
--
То, что вы уникальны еще не значит, что от вас есть толк
Re: MVP или нет?
От: _FRED_ Черногория
Дата: 16.08.07 06:51
Оценка:
Здравствуйте, 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: «Тихо в лесу…»
Help will always be given at Hogwarts to those who ask for it.
Re: MVP или нет?
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 16.08.07 13:26
Оценка:
Здравствуйте, mrUmka, Вы писали:

  1. Кто пользуется публичным set-свойством Items у класса Presenter, неужто Model, которая не должна знать ни о Presenter, ни о View?
  2. Каким образом реализуется работа нескольких View, отображающих данные одной модели? В примере Presenter работает только с одним View. Неужто и тут всесильная Model дергает setter Items для каждой пары Presenter-View, которые хотят с ней работать?
Если п.1-2 угадал, то это какой-то антиMVP.
Re: MVP или нет?
От: FlevelEx Россия  
Дата: 17.08.07 09:13
Оценка:
Здравствуйте, mrUmka, Вы писали:

U>Задолбался я спорить с китайцами по поводу Modal-View-Presenter. Они мне настойчиво утверждают, что это MVP:



если BindingSource это System.Windows.Forms.BindingSource,
то смысла в этом presenter-е нет при переходе на другой UI (web, console...)
особенно лишает его свойств полноценного presenter-а, как уже говорили, то, что не понятно кто устанавливает свойство Items:
если это Model то вообще все перепутали;
если какой-то application level код, то тогда это больше похоже на часть presenter-а с дополнительной отвественностью какого-нибудь UI Helper-а или Embedded Controller-а, задача которого обернуть в BindingSource
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.