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

时间:2017-02-27 20:10:41

标签: c++ model-view-controller dependency-injection ownership

我对MVC模式了解得足够好,但在C ++中实际实现的信息量却少得惊人。对于此应用程序,我使用wxWidgetsboost::depedency_injection,但情况应该是通用的。

在C ++ 11/14中,我们对对象所有权有严格的规则:对象可以在所有者之间共享,也可以对一个所有者唯一。我们还有被调用者非拥有的对象的旧式指针。

所以,问题是:谁拥有C ++中MVC中的哪个对象(模型/视图/控制器)?

我现在的猜测:

Views拥有controllers,由boost:di注入为unqiue_ptrControllersviews所有,并且以任何形式存储状态(仅在models目录上执行的程序)。 Models通过将controllers注入shared_ptr来共享controllers,并用于存储结果并为def __init__(self, firefox_profile=None, firefox_binary=None, timeout=30, capabilities=None, proxy=None, executable_path="/PATH/gecko/geckodriver", firefox_options=None, log_path="/PATH/geckodriver.log"): 操作提供数据

适合MVC吗?

1 个答案:

答案 0 :(得分:1)

那么有很多MVC变种很难回答。但不,控制器不属于视图,它应该是相反的,因为控制器是视图和模型之间的功能桥梁。模型附加到视图,因此视图可以拥有模型。

检查first C++ examplesecond C++ example。在第一个是“静态”所有权,而在第二个所有权是更多的挥发性。