Enfoque MVC con C ++

He estado aprendiendo el patrón de PHP MVC y es muy bueno. Casi he terminado la aplicación y puedo ver cómo puede crear un código sin un buen diseño. ¿Ahora se puede aplicar MCV a las aplicaciones de C ++? ¿Adónde va el administrador de complementos / complementos si eso es posible? ¿En el modelo o controlador? ¡Gracias!

EDITAR:

Me refiero a C ++ con el kit de herramientas GUI como QT / Wxwidgets / GTK +. También, por favor, ayúdame a implementar C ++. He aprendido cómo hacerlo en PHP, pero como saben, ¡los dos idiomas son de alguna manera diferentes!

EDIT2

http://forums.wxwidgets.org/viewtopic.php?f=1&t=30983

¿Cómo se implementa en C ++?

  • Haga que las clases encargadas de renderizar no sepan nada sobre los detalles de la aplicación. Llámalos clases SomethingView para aclarar este punto.

  • Haga que sus objetos de dominio no sepan nada sobre la visualización o la interacción del usuario. No necesitas llamarlos Modelo, pero podrías

  • cree un conjunto de clases a cargo de ejecutar el rol de Controladores: conecte de alguna manera las dependencias para ver y modelar las clases a través de la dependency injections, si es posible. ejemplo: CppInject . En cualquier caso, las clases de controladores pueden conocer las clases de modelos y de vistas, por lo que la parte importante es esta: todo el acoplamiento entre los objetos de vista y modelo está aislado de los controladores .

  • Además, esto implica que toda la progtwigción de estilo imperativo también debe limitarse a las clases del controlador: la vista y el modelo deben ser de estilo declarativo. Eso significa que deberían ofrecer servicios relacionados con su función, pero evitar la interacción directa con otros objetos como efectos secundarios.

  • No es cierto que necesite implementar la comunicación entre los controladores y los otros componentes con un sistema de estilo de evento, aunque este sistema es definitivamente útil, pero ciertamente no es necesario

  • ¡sorpresa! lo anterior se aplica a cualquier lenguaje o marco, excepto, por supuesto, a los idiomas que de alguna manera ya obligan a MVC a bajar de tu garganta desde el principio, es decir: ruby ​​on rails

MVC es un patrón de diseño no un constructo específico del idioma, así que sí, también puede aplicarlo a la aplicación C ++.

MVC puede y debe aplicarse en cualquier idioma para que su Interfaz de Usuario esté acoplada libremente con el backend y cualquiera de ellos se pueda cambiar con el mínimo impacto entre ellos.

El patrón MVC proporciona una separación limpia de objetos en:

  • Modelos para el mantenimiento de datos,
  • Vistas para mostrar todos o una parte de los datos, y
  • Controladores para el manejo de eventos que afectan el modelo o la (s) vista (s).

Sí, MVC se puede aplicar en C ++. Por ejemplo, el marco MFC utiliza la architecture de Vista / Documento que es esencialmente un MVC.

Un patrón de diseño no es una biblioteca o clase. Es un patrón. Así que no tienes una biblioteca genérica de MVC para C ++.

Utilice el marco de las ranas arborícolas . TreeFrog Framework es un marco de C ++ de alta velocidad y de stack completa para desarrollar aplicaciones web.

MVC es un patrón de diseño arquitectónico (es decir, una forma de crear software) comúnmente asociado con aplicaciones web, pero es aplicable en general a cualquier proyecto de software en cualquier idioma. Debe realizar un pequeño esfuerzo de abstracción en su proyecto e identificar qué pieza de software pertenece a cada parte (es decir, una GUI es probablemente parte de View, etc.).

Tenga en cuenta que este tipo de patrón está dirigido principalmente al desarrollo por separado , de modo que cualquier parte del proyecto pueda desarrollarse independientemente de las otras. Esto puede ser molesto para una aplicación independiente pequeña, pero útil y gratificante en proyectos más grandes.

Personalmente, uso las máquinas de estados de impulso para las señales lógicas y de impulso para conectar cosas entre sí.

Escribí un pequeño ejemplo que puedes analizar aquí: https://github.com/edubois/mvp-player