C (MVC模式)中的对象所有权

Object ownership in C++ (MVC pattern)

本文关键字:对象 所有权 MVC 模式      更新时间:2023-10-16

我足够理解MVC模式,但是出乎意料的是,在C 中实现实际实现的信息量很少。对于此应用程序,我正在使用wxWidgetsboost::depedency_injection,但是情况应该是通用的。

在C 11/14中,我们有严格的对象所有权规则:对象是在所有者之间共享的,或者是一个所有者独有的。我们还为Callee非拥有的对象提供了老式的指针。

那么,问题是:谁在C ?

中拥有MVC中的哪个对象(模型/视图/控制器)

我现在的猜测:

Views拥有boost:di注射为unqiue_ptrcontrollersControllersviews所有,DO 不是任何形式的存储状态(仅在models目录上执行的过程)。Models本身是通过将它们注入shared_ptr之间的所有controllers之间共享的,并用于存储结果并为controllers操作提供数据

MVC是正确的?

嗯,有很多MVC变体很难回答。但是不,控制器不是视图所拥有的,它应该是相反的,因为控制器是视图和模型之间的功能桥。模型附在视图上,因此视图可以拥有模型。

检查第一个C 示例或第二个C 示例。第一个拥有"静态"所有权,而第二个所有权中的所有权更加波动。