Название: Каким паттерном является Qt Model-View? Отправлено: zzzseregazzz от Сентябрь 25, 2013, 09:05 Есть паттерн Model-View-Controller. Но в документации по Qt про Controller ничего не сказано.
Где потерялся Controller? Название: Re: Каким паттерном является Qt Model-View? Отправлено: Bepec от Сентябрь 25, 2013, 09:20 Контроллером тут является делегат, насколько я понял, почитав статью на вики про M-V-C.
Model хранит данные. View отображает. Делегат позволяет изменять и манипулировать данными. Название: Re: Каким паттерном является Qt Model-View? Отправлено: mutineer от Сентябрь 25, 2013, 10:09 Контроллер тут размазан между view и model
Название: Re: Каким паттерном является Qt Model-View? Отправлено: Bepec от Сентябрь 25, 2013, 10:10 View же ничего не изменяет. Это делает делегат как бы. Разве нет?
Название: Re: Каким паттерном является Qt Model-View? Отправлено: Old от Сентябрь 25, 2013, 10:17 Контроллер полностью пишется пользователем, таких заготовок как Q...View и Q...Model просто не предусмотрено.
Название: Re: Каким паттерном является Qt Model-View? Отправлено: mutineer от Сентябрь 25, 2013, 10:45 View же ничего не изменяет. Это делает делегат как бы. Разве нет? Дефолтный делегат создается вьюшкой и спрятан от пользователя именно во вью. Я исходя из этого говорил Название: Re: Каким паттерном является Qt Model-View? Отправлено: Bepec от Сентябрь 25, 2013, 10:48 Ну тогда вердикт, что во View спрятан контроллер.
Название: Re: Каким паттерном является Qt Model-View? Отправлено: Old от Сентябрь 25, 2013, 11:28 Ну тогда вердикт, что во View спрятан контроллер. Делегат не является контроллером, в терминах данного паттерна.Название: Re: Каким паттерном является Qt Model-View? Отправлено: Bepec от Сентябрь 25, 2013, 12:22 Old поясните пожалуйста, почему нет?
Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать. - Q*Model Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами. - Q*View Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции. - При редактировании ячейки создаётся делегат, предоставляет ввод данных пользователю и -//-. Пока не могу принять вашу точку мнения без аргументов. Название: Re: Каким паттерном является Qt Model-View? Отправлено: Igors от Сентябрь 25, 2013, 12:38 Простой пример - юзер хочет удалить строку (ф-ционал контроллера). Отсюда видно что никаким контроллером делегат не является
Название: Re: Каким паттерном является Qt Model-View? Отправлено: Bepec от Сентябрь 25, 2013, 12:47 Невнятный пример, но смысл понял.
Часть функций контроллера имеются у делегата, но полностью он им не является. Название: Re: Каким паттерном является Qt Model-View? Отправлено: Igors от Сентябрь 25, 2013, 13:41 Невнятный пример, но смысл понял. Если Вы поняли - то очень внятный :)Название: Re: Каким паттерном является Qt Model-View? Отправлено: Bepec от Сентябрь 25, 2013, 13:49 Не будем оценивать внятность примера по моей понятливости :)
Название: Re: Каким паттерном является Qt Model-View? Отправлено: Old от Сентябрь 25, 2013, 14:47 Old поясните пожалуйста, почему нет? Роль контроллера управлять моделью и видом: настроить отображение, сортировки/фильтры, добавление/удаление записей и т.д.А делегат это по сути возможность более удобно настроить вид для конкретной задачи. Например, пользователю нужно иметь возможность редактировать данные прямо в таблице, но мы можем запретить такое редактирование в виде и открывать для этого диалог. Название: Re: Каким паттерном является Qt Model-View? Отправлено: Bepec от Сентябрь 25, 2013, 14:49 Благодарю за объяснение. Осознал.
Название: Re: Каким паттерном является Qt Model-View? Отправлено: Igors от Сентябрь 25, 2013, 16:58 Роль контроллера управлять моделью и видом: настроить отображение, сортировки/фильтры, добавление/удаление записей и т.д. Агв, это один из тех мерзких классов который должен знать всех :)Название: Re: Каким паттерном является Qt Model-View? Отправлено: Old от Сентябрь 25, 2013, 17:16 Агв, это один из тех мерзких классов который должен знать всех :) Ну всех это громко сказано. Он должен знать двух остальных участников. :)А просмотр должен знать модель. Только модель не обязана никого знать, хотя иногда полезно, что бы она знала контроллера. :) Название: Re: Каким паттерном является Qt Model-View? Отправлено: lit-uriy от Сентябрь 29, 2013, 18:41 Но в документации по Qt про Controller ничего не сказано. В документации сказано:Где потерялся Controller? Цитировать Архитектура модель-представление-контроллер (Model-View-Controller, MVC) является шаблоном проектирования, берущим начало от Smalltalk, который часто используется для создания пользовательских интерфейсов. В книге Design Patterns Гаммы (Gamma) и других написано: Цитировать MVC состоит из трех типов объектов. Модель - объект приложения, представление - его экранное представление и контроллер - определяет реакцию пользовательского интерфейса на пользовательский ввод. До MVC при разработке пользовательского интерфейса эти объекты смешивались вместе. MVC разделяет их, для увеличения гибкости и возможности повторного использования. Если объединить объекты представления и контроллера, то в результате получится архитектура модель/представление. Это все еще отделяет способ хранения данных от способа их представления пользователю, но обеспечивает простую структуру, основанную на тех же принципах. Данное разделение дает возможность показать пользователю одни и те же данных в различных представлениях и реализовать новые типы представлений без изменения базовой структуры данных. Чтобы обеспечить гибкость управления пользовательским вводом, мы представляем концепцию делегата (delegate). Преимущество наличия делегата в этой структуре состоит в том, что это дает возможность для настройки представления и редактирования элементов данных. Название: Re: Каким паттерном является Qt Model-View? Отправлено: zzzseregazzz от Сентябрь 30, 2013, 10:32 Как вы считаете, объединение View и Controller - это преимущество или недостаток Qt?
Есть ли opensource реализации настоящего MVC? Название: Re: Каким паттерном является Qt Model-View? Отправлено: Igors от Сентябрь 30, 2013, 12:19 Как вы считаете, объединение View и Controller - это преимущество или недостаток Qt? Один-два таких общих вопроса - нормально. Но если Вы задаете пачками только общие вопросы - превращается во флуд. Знайте меруЕсть ли opensource реализации настоящего MVC? Название: Re: Каким паттерном является Qt Model-View? Отправлено: unkeep от Октябрь 22, 2013, 17:02 кэп, но паттерн "наблюдатель" тоже имеет место? хотя походу везде где есть сигнал-слот, отчасти реализуется "наблюдатель"...
|