Re[3]: MVP и MDI
От: Qulac Россия  
Дата: 28.05.16 21:35
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, Qulac, Вы писали:


Q>>Здравствуйте, AlexNek, Вы писали:


AN>>>MVP с одним окошком проблем не вызывает.

AN>>>А вот с двумя никак не придумаю, как лучше.
AN>>>Проблема в том, что для вставки документа нужно иметь "указатель" на документ.
AN>>>А ни интерфейсу вьюва ни презентеру "не положено знать" об используемой технологии GUI. Ну типа того — сегодня винформс, завтра впф.

Q>>Значит нужен кто-то третий, кто все это будет знать.

AN>Можно и третий, но проблемы остаются: будет ли команда создания окна приходить в презентер или этот третий будет всё делать сам. Или этот третий будет просто обрабатывать команду.
AN>Что может знать этот "третий"?

В моем случае команда будет приходить в презентер главного окна, он же будет создавать призентер вложенного окна, как этот презентер вложенного окна соединяется с объектом окна, смотри код выше.

AN>>>Пока приходится всё в форме делать.

AN>>>...
AN>>>Хотя пожалуй, только что придумал, что скажете?

AN>>>Главная форма говорит своему презентеру "создай новое окошко".

AN>>>Презентер "говорит" интерфейсу вьюва "создай новое окошко", а в ответ получает презентер нового окошка.

Q>>Если все просто, то вполне подходящее решение. Я вообще в mvp и mvvm использую такой подход: есть служебный класс который занимается создание форм и связыванием со все остальным, его можно так же связать с ioc-контейнером. Вот примерный код:


Q>>
Q>>public static class WindowService
Q>> {
Q>>   //регистрируем тип формы и презентера. Вызывается в начале метода Main для каждого класса формы
Q>>   public static void Register<TView,TPresenter>()
Q>>   {
Q>>   }
Q>>   // отображает форму и возвращает ее объект.
Q>>   public statiс TView Show<TPresenter,TView>(){}
Q>> }
AN>[#яяяя]
Q>>  public class PresenterBase
Q>>  {
Q>>   private IView _view;
Q>>   private Model _model;
   
Q>>   public PresenterBase()
Q>>   {
Q>>    _view= WindowService.Show<PresenterBase,IView>();
Q>>    _model=new Model();
Q>>   }
Q>>  }
Q>>


Q>>Просто, минимум кода, можно допилить под любые потребности.

AN>Вообще то тут у меня вопросов больше чем ответов.
AN>- Какого WindowService знает и "M" и "V" и "P" и "GUI"?

А почему ему этого не знать, что запрещает?

AN>- отчего каждый презентер создает модель?

Может и не создавать, это может делать WindowService,а для простых диалоговых окон можно обойтись и без модели.

AN>- где происходит переход от типов к "инстансу"?

Я не могу за вас весь код написать, подумайте сами это ведь элементарно.

AN>- Если у меня несколько документов с одним въювом и презентером — какой из них показывать?

AN>Может лучше mvcsharp пользовать тогда?
Ни чего не могу сказать, этим не пользовался.
Программа – это мысли спрессованные в код
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.