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

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


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

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

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

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

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> }
[#яяяя]
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>Просто, минимум кода, можно допилить под любые потребности.

Вообще то тут у меня вопросов больше чем ответов.
— Какого WindowService знает и "M" и "V" и "P" и "GUI"?
— отчего каждый презентер создает модель?
— где происходит переход от типов к "инстансу"?
— Если у меня несколько документов с одним въювом и презентером — какой из них показывать?

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