MVP модель с состоянием
От: Аноним  
Дата: 20.12.12 09:50
Оценка:
Есть объект модели состояние которого может изменится только один раз. Изменится объект или нет, зависит от переданных аргументов при вызове методов объекта.
При изменении объекта также должен изменится его вид. Как в этом случае распределить обязанности между M,V и P?

Например:
  public class  Manager
       {
           private string _name;

           public bool IsChange { get; private set; }

           public string Name
           {
               get { return _name; }
               set
               {
                   if(value==_name)
                       return;

                   _name = value;
                   IsChange = true;
               }
           }
       }


При IsChange=true вид объекта Manager должен стать другим. Заранее спасибо.
Re: MVP модель с состоянием
От: Doc Россия http://andrey.moveax.ru
Дата: 20.12.12 17:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>При IsChange=true вид объекта Manager должен стать другим. Заранее спасибо.


Не ясно что значит стать другим. Но в общем случае, в MVC (в плане ответственности) ничего не меняется.
Re[2]: MVP модель с состоянием
От: Аноним  
Дата: 20.12.12 17:37
Оценка:
Здравствуйте, Doc, Вы писали:

Doc>Здравствуйте, Аноним, Вы писали:


А>>При IsChange=true вид объекта Manager должен стать другим. Заранее спасибо.


Doc>Не ясно что значит стать другим. Но в общем случае, в MVC (в плане ответственности) ничего не меняется.


Ну для данного примера где то в презенторе:


 public class ManagerPresenter
    {
        private Manager _manager;
        private ManagerView _managerView;
        
        //какое то событие ввода
        void Action()
        {
            _manager.Name = _managerView.Name;
            _managerView.IsProperty = _manager.IsChange;
        }
    }


На одно событие ввода приходится два обращения к модели. Можно в Manager для изменения Name использовать метод bool SetName(string name), возвращающий флаг изменения, но тогда _managerView.IsProperty будет вызываться всегда, даже если нет в этом необходимости. Мне кажется лучше всего в Manager передать делегат реализуюмый презентором, который он будет дергать при своем изменении.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.