Re: MVC pattern программирования. Вопросы по идеологии.
От: Аноним  
Дата: 11.07.05 09:39
Оценка:
Мне кажется, что все-таки дело в том, что обычно сначала обсуждают и только после этого начинают читать умные книги.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: MVC pattern программирования. Вопросы по идеологии.
От: AndreyFedotov Россия  
Дата: 11.07.05 09:45
Оценка:
Здравствуйте, pintelou, Вы писали:

P>Общеее замечание по паттерну MVC — коллеги, а вас нет такого впечатления, что практически каждое упоминание этого паттерна вызывает оживленную дискуссию о роли и функциях контроллера? Это наводит на мысли, что паттерн все же определен недостаточно удачно...


Или наоборот — слишком удачно. Ведь обсуждается-то не вопрос о том, применять его или нет, а то, как именно его реализовывать и применять.
По-моему дело тут в том, что MVC — это не просто конкретный шаблон — вроде той же Factory, а скорее некое общее архитектурное решение. Ведь в общем случае и Model и View и Controller — это не просто отдельные классы, а скорее целые слои.
Re[3]: MVC pattern программирования. Вопросы по идеологии.
От: LamerDrv Россия  
Дата: 12.07.05 11:38
Оценка:
Здравствуйте, Dimetrius, Вы писали:


D>На мой взгляд все несколько иначе: вид не должен имеет ссылку на модель, как вы указали, точно также модель ничего не должна знает о текущем виде. Модель и вид посылают сообщения друг другу только посредством интерфейса контроллера. Т.е. только интерфейс контроллера обеспечивает взаимодействие модели и вида. Таким образом, легко реализуется заменяемость видов и контроллеров.



В документации к библиотеке классов SFL (Stingray Foundation Library), которая входит в состав ихнего Grid-а (и других продуктов), говорится что у вида есть ссылка на модель, но эта сссылка должна быть слабой. В их примерах класс, реализующий конкретный вид, содержит указатель на базовый библиотечный класс модели (из которого порождена конкретная модель).
Re[13]: MVC pattern программирования. Вопросы по идеологии.
От: LamerDrv Россия  
Дата: 12.07.05 12:11
Оценка: 7 (1)
Здравствуйте, Dimetrius, Вы писали:

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


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


D>>>Адаптеры и фасады и не являются частью контроллера...если говорить, о фасаде модели, то он просто предоставляет унифицированный интерфейс модели, а уже контроллер использует этот интерфейс с целью организации взаимодействия с видами(видом). Я это именно так понимаю


AF>>Согласен. Я и не считаю их частью контроллера. В принципе их конечно модно было бы отнести к модели, однако если рассматривать сценарий, когда нам требуется не меняя модель добавлять к ней дополнительные интерфейсы — для того, что бы показывать её данные в некотором новом представлении, то получается, что адаптеры стоит вынести в отдельный слой. Этот слой (слой адаптеров), расположен над слоем модели и используется контроллером для конфигурирования представлений.


D>к чему относить фасады и адаптеры, на мой взгляд, вопрос, который должен решаться в контексте поставленной задачи или в соотвествии с собственными вкусами(если контекст задачи явно не подсказывает решение)...У меня были случаи, когда приходилось выделять фасад модели в отдельный слой(класс) между моделью и контроллером, а было и так что я просто интегрировал фасад в модель(в интерфейс корня иерархии классов модели)- но это, на мой взгляд, целесообразно для небольших моделей...самое главное из всего вышесказанного то, что модель должна иметь унифицированный интерфейс по отношению к контроллеру, а как его реализовать-это по обстоятельствам


В той же Stringray Foundation Library предлагают для этого дела так называемую presentation model, которую можно вставлять между видом и основной моделью (кажется это похоже на то, что здесь описывают). Там рассматривается пример, очень схожий с тем, который приводил ][tiger насчет файловой структуры.
В их примере они рассматривают, кажется, абстрактную программу для разработки электрических схем. В этом примере, отдельные виды могут не хотеть знать о том, что они отображают именно элементы элетрической схемы — и поэтому эти виды обращаются за данными не к основной модели, а к презентационной модели (которая поставляет виду только визуальные характеристики элементов).
Re[14]: MVC pattern программирования. Вопросы по идеологии.
От: AndreyFedotov Россия  
Дата: 12.07.05 12:49
Оценка:
Здравствуйте, LamerDrv, Вы писали:

LD>В той же Stringray Foundation Library предлагают для этого дела так называемую presentation model, которую можно вставлять между видом и основной моделью (кажется это похоже на то, что здесь описывают). Там рассматривается пример, очень схожий с тем, который приводил ][tiger насчет файловой структуры.

Собственно это мы и обсуждали. Вопрос был только лишь в том, к кому из троицы модель-представление-контроллер или к кому-то четвёртому относить функцию преобразования интерфейса модели к интерфейсу вида. Вот тут мнения разделились...

LD>В их примере они рассматривают, кажется, абстрактную программу для разработки электрических схем. В этом примере, отдельные виды могут не хотеть знать о том, что они отображают именно элементы элетрической схемы — и поэтому эти виды обращаются за данными не к основной модели, а к презентационной модели (которая поставляет виду только визуальные характеристики элементов).

Да, это стандартное решение. Аналогичные решения используются во многих САПР, например. Там есть универсальный редактор, который ничего не знает о модели, которую он редактирует, а так же модель, которая не в курсе насчёт редактора. Но между ними есть слой, который преобразует интерфейсы объектов модели в понятный представлению (редактору) вид.
Re[4]: MVC pattern программирования. Вопросы по идеологии.
От: Dimetrius Украина  
Дата: 12.07.05 21:04
Оценка: +1
Здравствуйте, LamerDrv, Вы писали:


LD>В документации к библиотеке классов SFL (Stingray Foundation Library), которая входит в состав ихнего Grid-а (и других продуктов), говорится что у вида есть ссылка на модель, но эта сссылка должна быть слабой. В их примерах класс, реализующий конкретный вид, содержит указатель на базовый библиотечный класс модели (из которого порождена конкретная модель).


Не буду спорить с создателями SFL, у них, очевидно, в силу реализации подобного подхода были какие-то свои мотивы Я постараюсь объяснить какие недостатки я вижу в этом подходе:
1. невозможность унифицированного контроля потоков сообщений и данных между моделью и видом
2. модели отображаемые видом вовсе не обязательно пораждаются от одного абстракного класса
Re: MVC pattern программирования. Вопросы по идеологии.
От: DigitPower  
Дата: 15.07.05 09:34
Оценка: 8 (1)
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте. Возникли следущие вопросы по MVC.


А>1. Есть объект типа "набор объектов", что хранить у него в Model? Model'ы объектов, или их контроллеры.


А>2. Где надо хранить функции работы с моделью? Функции типа: добавить в набор еще один объект, удалить из набора объект, etc. Если в контроллере, то как быть с private данными Model'и, а если еще и в Model'е то, ИМХО, переусложнение.


А>Спасибо.


Надеюсь будет полезна:
http://rsdn.ru/Forum/Message.aspx?mid=1103088
Автор: DigitPower
Дата: 01.04.05
Re[2]: MVC pattern программирования. Вопросы по идеологии.
От: Аноним  
Дата: 19.07.05 13:16
Оценка: +1 :))
_FR>
_FR>                  1 Модель 1
_FR>                 /          \
_FR>               оо            оо
_FR>        Контроллер 1<----->1 Вид
_FR>


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