Подход MVC с С++
Я изучаю шаблон PHP MVC, и это довольно круто. почти закончили приложение, и я вижу, как беспорядок вы можете сделать код без хорошего дизайна.
Теперь можно применить MCV к приложениям на С++? Где плагин-менеджер/плагины идет, если это возможно? В модели или контроллере?
Благодарю!
EDIT:
Я имею в виду С++ с набором инструментов GUI, например QT/Wxwidgets/GTK +
Также, пожалуйста, помогите мне в том, как реализовать на С++. Я научился делать это на PHP, но, как вы знаете, оба языка как-то разные!
EDIT2
http://forums.wxwidgets.org/viewtopic.php?f=1&t=30983
Ответы
Ответ 1
как вы его реализуете на С++
-
делать классы, ответственные за предоставление информации о деталях приложения. Назовите их классами SomethingView, чтобы сделать это ясно.
-
сделать объекты вашего домена ничего не знающими о визуализации или взаимодействии с пользователем. Вам не нужно называть их Model, но вы могли бы
-
создайте набор классов, отвечающих за выполнение роли контроллеров: как можно заодно подключите зависимости к классам просмотра и модели с помощью инъекции зависимостей. Пример: CppInject. В любом случае классы контроллеров могут знать как о классах моделей, так и в классе, поэтому важная часть такова: вся связь между представлением и объектами модели изолирована от контроллеров.
-
Кроме того, это подразумевает, что все программирование в стиле императива должно быть ограничено классами контроллеров: view и model должны быть декларативными. Это означает, что они должны предлагать услуги, связанные с его ролью, но избегать прямого взаимодействия с другими объектами как побочные эффекты
-
Неверно, вам нужно реализовать связь между контроллерами и другими компонентами с системой стиля событий, хотя такая система определенно полезна, но, безусловно, не требуется.
-
неожиданность! вышеизложенное относится к любому языку или структуре, за исключением, конечно, языков, которые каким-то образом уже заставляют MVC сжимать горло с самого начала, то есть: ruby on rails
Ответ 2
MVC - это шаблон проектирования, а не специфическая для языка конструкция. Поэтому да, вы также можете применить его к С++-приложению.
MVC может и должен применяться на любом языке, поэтому ваш пользовательский интерфейс свободно связан с бэкэнд и может быть изменен с минимальным воздействием друг на друга.
Шаблон MVC обеспечивает чистое разделение объектов на:
- Модели для хранения данных,
- Представления для отображения всей или части данных и
- Контроллеры для обработки событий, которые влияют на модель или представление (ы).
Ответ 3
Да, MVC может быть применен в С++. Например, в среде MFC используется архитектура Document/View, которая по существу является MVC.
Шаблон проектирования не является библиотекой или классом. Это образец. Таким образом, у вас нет общей библиотеки MVC для С++.
Ответ 4
Используйте Рамка древесных лягушек. TreeFrog Framework - это высокоскоростная и полнотекстовая платформа С++ для разработки веб-приложений.
Ответ 5
MVC - это шаблон архитектурного проектирования (то есть способ создания программного обеспечения), обычно связанный с веб-приложениями, но он применим в целом к любому программного проекта на любом языке. Вы должны сделать небольшое абстракционное усилие в своем проекте и определить, какая часть программного обеспечения принадлежит каждой части (т.е. Графический интерфейс, вероятно, является частью представления и т.д.).
Обратите внимание, что этот тип шаблонов в основном направлен на раздельное развитие, так что любая часть проекта может быть разработана независимо от других. Это может быть раздражающим для небольшого автономного приложения, но полезно и полезно для больших проектов.
Ответ 6
Лично я использую машины с форсированным состоянием для логических и импульсных сигналов для соединения вещей.
Я написал небольшой пример, который вы можете проанализировать здесь:
https://github.com/edubois/mvp-player