MVC approach with C++

MVC approach with C++

本文关键字:C++ with approach MVC      更新时间:2023-10-16

我一直在学习PHP MVC模式,它很酷。我几乎完成了应用程序,我可以看到如何混乱,你可以使一个代码没有良好的设计。现在MCV可以应用于c++应用程序吗?插件管理器/插件去哪里,如果这是可能的?在模型中还是在控制器中?谢谢!

编辑:

我指的是带有GUI工具包的c++,比如QT/Wxwidgets/GTK+也请帮助我如何在c++中实现。我已经学会了如何在PHP中做到这一点,但正如你所知道的,这两种语言是不同的!

EDIT2

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

如何在c++中实现呢

  • 使负责渲染的类对应用程序细节一无所知。

  • 使您的域对象不知道任何关于可视化或用户交互。你不需要叫它们Model,但是你可以

  • 创建一组负责运行controller角色的类:如果可能的话,通过依赖注入将依赖连接到视图和建模类。例子:CppInject。在任何情况下,控制器类都可以知道模型类和视图类,所以重要的部分是:视图和模型对象之间的所有耦合都被隔离到控制器中。

  • 同样,这意味着所有命令式风格的编程也应该局限于控制器类:视图和模型应该是声明式的。这意味着,它们应该提供与其角色相关的服务,但避免与其他对象直接交互作为副作用

  • 这不是真的,你需要实现控制器和其他组件之间的通信与事件式系统,虽然这样的系统肯定是有帮助的,但肯定不是必需的

  • 惊喜!上述适用于任何语言或框架,当然除了那些从一开始就强迫你使用MVC的语言,例如ruby on rails

MVC是一种设计模式,而不是特定于语言的结构,所以你也可以将它应用到c++应用程序中。

MVC可以并且应该在任何语言中应用,这样您的用户界面就可以与后端松散耦合。两者都可以在对彼此影响最小的情况下更改。

MVC模式提供了一个清晰的对象分离:

  • 模型维护数据,
  • 查看显示全部或部分数据,以及
  • 控制器用于处理影响模型或视图的事件。

是的,MVC可以在c++中应用。例如,MFC框架使用文档/视图架构,本质上是MVC。

设计模式不是一个库或类。这是一种模式。所以你没有一个通用的c++ MVC库。

使用树蛙框架。TreeFrog框架是一个用于开发Web应用程序的高速全栈c++框架。

MVC是一种架构设计模式(即构建软件的方式),通常与web应用程序相关,但它通常适用于任何语言的任何软件项目。你必须在你的项目上做一点抽象的努力,并确定哪一块软件属于每个部分(例如,GUI可能是View的一部分,等等)。

注意,这种类型的模式主要是针对独立开发,这样项目的任何部分都可以开发,而不考虑其他部分。对于一个小型的独立应用程序来说,这可能很烦人,但对于较大的项目来说,这很有用,而且值得。

就我个人而言,我使用boost状态机作为逻辑和boost信号来将事物连接在一起。

我写了一个小例子,你可以在这里分析:https://github.com/edubois/mvp-player