MVC approach with C++
MVC approach with C++
我一直在学习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- Problems with std::cin.fail()
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Issues with Win32 ReadProcessMemory API
- Qt with WinAPI MouseProc
- [[maybe_unused]] with structured_binding?
- Issue with WriteProcessMemory
- OpenCV RTP-Stream with FFMPEG
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- std::adjacent_difference with std::chrono time_point
- DLL Made with CMake 使程序崩溃
- QtCreator with C 库中的链接器问题
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- specialized std::default_delete with QQmlComponent
- VS2019 - Sudo Remote Debugging on Linux with Cmake project
- Inference pytorch C++ with alexnet and cv::imread image
- Pybind11: init<> with lambda
- Incomings Call with Android Sip stack in Embarcadero C++ bui