Подход 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