Существуют и другие методы, разработанные начиная с MVC, а именно Presenter Model View. Здесь на сайте Мартина Фаулера - хороший обзор этих паттернов.
Мое собственное приложение использует пассивное представление, поскольку оно позволяет нам срывать пользовательский интерфейс и легко заменять другое. Это преимущество для нас, поскольку наше программное обеспечение представляет собой приложение CAD / CAM, предназначенное для использования с различными станками для резки металла.
Наши формы - это тонкие оболочки, которые называют UI Layer. Формы реализуют интерфейс и регистрируют себя на уровне пользовательского интерфейса. У нас есть различные формы, используемые для разных целей. Например, форма настройки, в которой пользователь изменяет расширенные параметры настройки для машины, которую он использует, форма ввода формы, форма резки металла, где пользователь размещает формы, которые должны быть вырезаны. Все эти формы имеют отличный интерфейс.
Кроме того, форма резки металла отличается для разных типов станков. Можно показать WYSIWYG вид плоской металлической пластины. Другой - это сетка стилей таблиц, которые нужно вырезать в том порядке, в котором они будут вырезаны. Еще один показывает детали, расположенные на вращающейся трубе.
Слой пользовательского интерфейса по очереди принимает входящие данные и выполняет команды. Команды, в свою очередь, взаимодействуют как с уровнем пользовательского интерфейса, так и с моделью. Почти все обрабатывается с помощью командных объектов, в отличие от прямых вызовов через методы.
Эта структура позволяет подключать различные интерфейсы к одной и той же модели. В пределах определенного пользовательского интерфейса могут поддерживаться различные виды. То, что я пометил как модель, может быть отдельными библиотеками. Они будут объединены только на уровне интерфейса пользовательского интерфейса и выше через компоненты пользовательского интерфейса, ссылающиеся на разные библиотеки.
Иерархия выглядит следующим образом.
- Интерфейсы реализации форм Forms
- Реализация интерфейсов интерфейса пользователя и
взаимодействует с формами через форму
Интерфейсы
- Команда взаимодействует с режимом и
UI через интерфейсы UI.
- Интерфейсы пользовательского интерфейса
- Модель