C++ 中的对象所有权(MVC 模式)
Object ownership in C++ (MVC pattern)
我非常了解 MVC 模式,但在 C++ 中实际实现的信息量少得惊人。对于此应用程序,我使用 wxWidgets
和 boost::depedency_injection
,但情况应该是通用的。
在 C++ 11/14 中,我们对对象所有权有严格的规定:对象要么在所有者之间共享,要么对一个所有者唯一。我们还有旧式指针,用于非被调用者拥有的对象。
所以,问题是:在 C++ 的 MVC 中,谁拥有哪个对象 (model/view/controller)?
我现在的猜测:
Views
拥有 controllers
,由 boost:di
作为 unqiue_ptr
注入。 Controllers
归 views
所有,并且 不 以任何形式存储状态(仅在 models
目录上执行的过程)。 Models
本身通过将它们作为 shared_ptr
注入而在所有 controllers
之间共享,并用于存储结果并为 controllers
操作
提供数据
它适合 MVC 吗?
好吧,MVC 的变体太多了,很难回答。但是不,控制器不属于视图,应该相反,因为控制器是视图和模型之间的功能桥梁。模型附加到视图,因此视图可以拥有模型。
检查 first C++ example or that second C++ example。在第一个中有 "static" 所有权,而在第二个所有权中有更多的波动。
我非常了解 MVC 模式,但在 C++ 中实际实现的信息量少得惊人。对于此应用程序,我使用 wxWidgets
和 boost::depedency_injection
,但情况应该是通用的。
在 C++ 11/14 中,我们对对象所有权有严格的规定:对象要么在所有者之间共享,要么对一个所有者唯一。我们还有旧式指针,用于非被调用者拥有的对象。
所以,问题是:在 C++ 的 MVC 中,谁拥有哪个对象 (model/view/controller)?
我现在的猜测:
Views
拥有 controllers
,由 boost:di
作为 unqiue_ptr
注入。 Controllers
归 views
所有,并且 不 以任何形式存储状态(仅在 models
目录上执行的过程)。 Models
本身通过将它们作为 shared_ptr
注入而在所有 controllers
之间共享,并用于存储结果并为 controllers
操作
它适合 MVC 吗?
好吧,MVC 的变体太多了,很难回答。但是不,控制器不属于视图,应该相反,因为控制器是视图和模型之间的功能桥梁。模型附加到视图,因此视图可以拥有模型。
检查 first C++ example or that second C++ example。在第一个中有 "static" 所有权,而在第二个所有权中有更多的波动。