Re[14]: DI + UI
От: Ziaw Россия  
Дата: 24.06.09 08:24
Оценка:
Здравствуйте, baranovda, Вы писали:

B>Если View знает о Presenter, а Presenter — о View, то, например, у меня вчера возникло непонимание и желание слить их воедино


Неверно, view знает о презентере, это нормально, у нее один вполне реальный презентер и дальнейших вариантов работы этой view с другим презентером я не представляю. Презентер же знает только об интерфейсе view. Посему его легко тестировать подсовывая собственные реализации этого интерфейса. Слив их воедино мы лишаемся четкого разделения логики представления и БЛ. И лишаемся юнит тестирования обеих.

B>http://www.rsdn.ru/article/patterns/ModelViewPresenter.xml
Автор(ы): Иван Бодягин
Дата: 25.07.2006
В наше время сложно найти разработчика, который не слышал бы о паттерне под названием Model-View-Controller или сокращенно MVC, что вообщем не удивительно, с задачей отделения данных от их представления сталкиваешься практически на каждом проекте. Однако, как ни странно, столь же сложно найти разработчика, который действительно четко себе представляет, что такое на самом деле паттерн MVC и как его можно реализовать в конкретной ситуации. Основная причина такой неоднозначности в том, что по историческим причинам данной аббревиатурой принято называть не один единственный паттерн, а целое семейство паттернов, призванное отделять представление от модели. Произошло это в силу разных обстоятельств. Отчасти из-за того что MVC не просто паттерн, а довольно объемное архитектурное решение, в котором каждый новый разработчик видел что-то свое и ставя во главу угла особенности своего проекта, реализовывал его по своему. Отчасти же из-за возраста данного паттерна, во времена его изобретения и сами приложения, и графические интерфейсы были существенно беднее чем в наше время, с тех пор они сильно эволюционировали и вместе с ними изменялся и сам паттерн. Данная статья посвящена также одному из паттернов входящих в это семейство, причинам его появления, особенностям применения, преимуществам и недостаткам, а так же описанию сопутствующих паттернов.

B>

B>В этой версии MVC Контроллер интегрирован в Представление, что ни в коей мере не является нарушением основной идеи паттерна.

(правда, тут речь идёт о MVC)


В каком месте?
... << RSDN@Home 1.2.0 alpha 4 rev. 1228>>
Re[4]: DI + UI
От: Ziggi111 Россия  
Дата: 02.07.09 10:34
Оценка:
Здравствуйте, gandjustas, Вы писали:

B>>Резонно. Но от BindingSource, которые в своём роде тоже являются презентерами, отказываться не хочу.

G>Не надо отказываться.
G>Будет примерно так:

G>
G>public class XXXForm: Form, IXXXView
G>{
G>    public XXXForm(IXXXPresenter presentr)
G>    {
G>        presenter.SetView(this); //костыль так как не поддерживаются рекурсивные зависимости
G>        ...
G>    }
 
G>    public void IXXXView.SetDataSourcce(..)
G>    {
G>        //настройка BindingSource
G>    }
G>}

G>public class XXXPresenenter: IXXXPresenter
G>{
G>    public XXXPresenenter(/*здесь все зависимости*/)
G>    {
G>        ...
G>    }

G>    ...
G>}

G>


Сорри за глупый вопрос, но у меня почему-то не утряслось в башке
для public void IXXXView.SetDataSourcce(..), что должно стать параметром?
Re[5]: DI + UI
От: Dog  
Дата: 02.07.09 11:08
Оценка:
Z>Сорри за глупый вопрос, но у меня почему-то не утряслось в башке
Z>для public void IXXXView.SetDataSourcce(..), что должно стать параметром?
Я думаю можно BindingSource.
Re[5]: DI + UI
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 02.07.09 11:19
Оценка:
Здравствуйте, Ziggi111, Вы писали:

Z>Сорри за глупый вопрос, но у меня почему-то не утряслось в башке

Z>для public void IXXXView.SetDataSourcce(..), что должно стать параметром?

Коллекция объектов или DataSet данные из которых надо связывать с контролами.
Re[6]: DI + UI
От: Ziggi111 Россия  
Дата: 02.07.09 11:20
Оценка:
Здравствуйте, Dog, Вы писали:

Z>>Сорри за глупый вопрос, но у меня почему-то не утряслось в башке

Z>>для public void IXXXView.SetDataSourcce(..), что должно стать параметром?
Dog>Я думаю можно BindingSource.
ничего не понял.
Если не использовать никаких паттернов, то получается примерно такой код

this.myBindingSource.DataSource = typeof (myType);
this.label1.DataBindings.Add (new System.Windows.Forms.Binding ("Text", this.myBindingSource, "Property1", true));
this.Text1.DataBindings.Add (new System.Windows.Forms.Binding ("Text", this.myBindingSource, "Property2", true));

если мы напишем

public void IXXXView.SetDataSourcce(BindingSource myBindingSource)
{
    //То что тогда здесь?
}
Re[6]: DI + UI
От: Ziggi111 Россия  
Дата: 02.07.09 11:23
Оценка:
Здравствуйте, gandjustas, Вы писали:

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


Z>>Сорри за глупый вопрос, но у меня почему-то не утряслось в башке

Z>>для public void IXXXView.SetDataSourcce(..), что должно стать параметром?

G>Коллекция объектов или DataSet данные из которых надо связывать с контролами.

или объект модели, если мы редактируем один объект. так?
но ведб если это так, то получается, что View знает о модели. или я что-то путаю?
Re[7]: DI + UI
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 02.07.09 11:31
Оценка:
Здравствуйте, Ziggi111, Вы писали:

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


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


Z>>>Сорри за глупый вопрос, но у меня почему-то не утряслось в башке

Z>>>для public void IXXXView.SetDataSourcce(..), что должно стать параметром?

G>>Коллекция объектов или DataSet данные из которых надо связывать с контролами.

Z>или объект модели, если мы редактируем один объект. так?
ага

Z>но ведб если это так, то получается, что View знает о модели. или я что-то путаю?

Не знает. Данные — это не "модель".
Re[8]: DI + UI
От: Ziggi111 Россия  
Дата: 02.07.09 11:52
Оценка:
Здравствуйте, gandjustas, Вы писали:

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


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


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


Z>>>>Сорри за глупый вопрос, но у меня почему-то не утряслось в башке

Z>>>>для public void IXXXView.SetDataSourcce(..), что должно стать параметром?

G>>>Коллекция объектов или DataSet данные из которых надо связывать с контролами.

Z>>или объект модели, если мы редактируем один объект. так?
G>ага

Z>>но ведб если это так, то получается, что View знает о модели. или я что-то путаю?

G>Не знает. Данные — это не "модель".

получается что на самой форме все останется как и было, т.е. в дизайнере проставляем контролам BindingSource, самому BindingSource проставляем DataSource и т.д.
а в этом методе просто пишем

public void IXXXView.SetDataSourcce(MyClass Value)
{
    BindingSource.DataSource = Value;
}

так?
Re[9]: DI + UI
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 02.07.09 11:56
Оценка: 3 (1)
Здравствуйте, Ziggi111, Вы писали:

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


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


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


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


Z>>>>>Сорри за глупый вопрос, но у меня почему-то не утряслось в башке

Z>>>>>для public void IXXXView.SetDataSourcce(..), что должно стать параметром?

G>>>>Коллекция объектов или DataSet данные из которых надо связывать с контролами.

Z>>>или объект модели, если мы редактируем один объект. так?
G>>ага

Z>>>но ведб если это так, то получается, что View знает о модели. или я что-то путаю?

G>>Не знает. Данные — это не "модель".

Z>получается что на самой форме все останется как и было, т.е. в дизайнере проставляем контролам BindingSource, самому BindingSource проставляем DataSource и т.д.

Z>а в этом методе просто пишем

Z>
Z>public void IXXXView.SetDataSourcce(MyClass Value)
Z>{
Z>    BindingSource.DataSource = Value;
Z>}
Z>

Z>так?

Так. И еще надо обеспечить чтобы изменения при сохранении проходили через презентер.
Re[10]: DI + UI
От: Ziggi111 Россия  
Дата: 02.07.09 11:59
Оценка:
Здравствуйте, gandjustas, Вы писали:


G>Так. И еще надо обеспечить чтобы изменения при сохранении проходили через презентер.

примерно как здесь
Автор: Ziaw
Дата: 24.06.09
?
Спасибо! В общем все вроде утряслось
Re[7]: DI + UI
От: Dog  
Дата: 02.07.09 12:02
Оценка:
Dog>>Я думаю можно BindingSource.
Z>ничего не понял.
Z>Если не использовать никаких паттернов, то получается примерно такой код
Z>
Z>this.myBindingSource.DataSource = typeof (myType);
Z>this.label1.DataBindings.Add (new System.Windows.Forms.Binding ("Text", this.myBindingSource, "Property1", true));
Z>this.Text1.DataBindings.Add (new System.Windows.Forms.Binding ("Text", this.myBindingSource, "Property2", true));
Z>

Z>если мы напишем
Z>
Z>public void IXXXView.SetDataSourcce(BindingSource myBindingSource)
Z>{
Z>    //То что тогда здесь?
Z>}
Z>

public BindingSource IXXXView.GetDataSourcce()
{
    ...
}

Re[8]: DI + UI
От: Ziggi111 Россия  
Дата: 02.07.09 12:07
Оценка:
Здравствуйте, Dog, Вы писали:

Dog>>>Я думаю можно BindingSource.

Z>>ничего не понял.
Z>>Если не использовать никаких паттернов, то получается примерно такой код
Z>>
Z>>this.myBindingSource.DataSource = typeof (myType);
Z>>this.label1.DataBindings.Add (new System.Windows.Forms.Binding ("Text", this.myBindingSource, "Property1", true));
Z>>this.Text1.DataBindings.Add (new System.Windows.Forms.Binding ("Text", this.myBindingSource, "Property2", true));
Z>>

Z>>если мы напишем
Z>>
Z>>public void IXXXView.SetDataSourcce(BindingSource myBindingSource)
Z>>{
Z>>    //То что тогда здесь?
Z>>}
Z>>

Dog>
Dog>public BindingSource IXXXView.GetDataSourcce()
Dog>{
Dog>    ...
Dog>}
Dog>

Dog>
Ну да, у меня тоже такая мысль была, но мне нужно было просто уложить окончательно всё в голове
Наверно делать буду именно так. Не могу объяснить почему, но почему-то кажется что так красивше
Re[10]: DI + UI
От: Ziggi111 Россия  
Дата: 03.07.09 11:55
Оценка:
Здравствуйте, gandjustas, Вы писали:
сорри, а не могли бы Вы немного помочь в осмыслении некоторых вещей. могли бы мы с Вами пообчаться помимо форума(ася, почта etc)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.