Кроме того, многие языки сценариев, такие как Python, Ruby, Lua и т. Д., Имеют это возможность, но не хватает многих приятных функций функциональных языков, таких как алгебраические типы данных и сопоставление с образцом.
Возможно, стоит взглянуть на Model-View-ViewModel (если вы особенно заинтересованы / счастливы использовать WPF).
Он настроен специально для работы с WPF и Silverlight и использует привязку данных, чтобы склеить все вместе.
В Интернете есть несколько ресурсов, чтобы узнать больше, в том числе введение Джона Госсмана ] и хорошую статью Джоша Смита,
Для приложений Windows ОС Windows непреднамеренно становится частью Контроллера.
Модель может подписаться на различные события / сообщения (например, щелчок мышью, перемещение, изменение размера окна, нажатие кнопки ...). По завершении обработки изменений-обновлений представление обновляется посредством операций перерисовки.
ОС Windows действует здесь как контроллер, потому что она одновременно отправляет сообщения модели (например, щелчок мышью) или представлению (сообщая ему, что часть окон загрязнена и требует перерисовки).
Конечно, для любого коммерческого приложения вы должны реализовать свою собственную структуру модели и документа и отделить их от соответствующих объектов WinForm.
В .net это не так ясно, потому что существует только один файл для частей модели и представления. В MFC это было очень ясно - с классом CDocument и соответствующим ему классом CView.
Вместо шаблона MVC для приложений Windows он помогает понять архитектуру обмена сообщениями Windows и способы их обработки.
Дерик Бейли (через Los Techies) опубликовал в блоге несколько фантастических статей (и полный исходный код демонстрации) для реализации MVP в WinForms app с парой других хороших шаблонов, добавленных в смесь (Application Controller, Event Aggregator).
Работа основана на серии статей Джереми Д. Миллера под названием «Создайте свой собственный CAB»