Шаг 99.
Библиотека Qt.
Интервью или модель-представление
На этом шаге рассмотрим технологию, называемую "интервью" или "модель-представление".
Применение элементно-базированного подхода не всегда является подходящим и оптимальным. Этот подход идеально подходит для простых ситуаций, когда нужно отобразить небольшой объем данных. Но в более сложных ситуациях, таких как, например, работа с базами данных, файловой системой и т. д., использовать такой подход, из соображений эффективности и расхода памяти, не рекомендуется. Представьте себе, что для получения результатов SQL-запросов вам придется записывать их в элементы и тем самым дублировать данные. А при использовании трех виджетов, показывающих эти данные, объем данных утроится, и, кроме того, вам нужно будет решать проблему синхронизации при отображении этих данных.
Qt предоставляет технологию, называемую "интервью", или, иначе, "модель-представление". Очень важно понимать то, что архитектура "модель-представление", реализованная в Qt, не является прямой реализацией этого шаблона, а использует только основные его идеи, такие как, например, отделение данных от их представления.
Применение технологии "интервью" дает следующие преимущества:
- возможность показа данных в нескольких представлениях без дублирования. Если вы работаете с элементно-базированным подходом и необходимо добавить новые элементы, то, при синхронизации отображения с данными, происходит дублирование самих данных. В подходе "модель-представление" мы работаем с моделью данных, поэтому дублирования не происходит;
- возможность внесения изменений с минимумом временных затрат. Например, представим себе, что в программе полностью изменился способ сохранения данных. Это не будет помехой, т. к. связь с данными происходит с помощью интерфейса, и до тех пор, пока сам интерфейс останется нетронутым, это не повлечет за собой больших изменений в коде программы;
- удобство программного кода. Поскольку осуществляется разделение на данные и представление, то, если появится необходимость что-то дополнить или исправить, эти изменения коснутся лишь одной из частей. Остальные части вашего приложения останутся без изменений;
- удобство тестирования кода. Как только интерфейс задан, можно написать тест, который может быть использован для любой модели, реализующей этот интерфейс. Qt предоставляет специальную библиотеку для проведения тестов модулей;
- упрощение интеграции баз данных. Эта же модель применяется Qt для SQL, чтобы сделать интеграцию баз данных проще для программистов, не связанных с разработкой баз данных.
Все части технологии "интервью" могут взаимодействовать друг с другом в соответствии с направлениями стрелок, показанными на рис. 1.
Рис.1. Взаимодействие компонентов "интервью"
Основные составляющие технологии "интервью":
- модель — отвечает за управление данными и предоставляет интерфейс для чтения и записи данных;
- представление — отвечает за представление данных пользователю и за их расположение;
- выделение элемента — специальная модель, отвечающая за централизованное использование выделений элементов;
- делегат — отвечает за рисование каждого элемента в отдельности, а также за его редактирование.
На следующем шаге рассмотрим понятие "модели", как составной части технологии "модель-представление".
Предыдущий шаг
Содержание
Следующий шаг