我对MVC模式了解得足够好,但在C ++中实际实现的信息量却少得惊人。对于此应用程序,我使用wxWidgets
和boost::depedency_injection
,但情况应该是通用的。
在C ++ 11/14中,我们对对象所有权有严格的规则:对象可以在所有者之间共享,也可以对一个所有者唯一。我们还有被调用者非拥有的对象的旧式指针。
所以,问题是:谁拥有C ++中MVC中的哪个对象(模型/视图/控制器)?
我现在的猜测:
Views
拥有controllers
,由boost:di
注入为unqiue_ptr
。 Controllers
归views
所有,并且不以任何形式存储状态(仅在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吗?
答案 0 :(得分:1)
那么有很多MVC变种很难回答。但不,控制器不属于视图,它应该是相反的,因为控制器是视图和模型之间的功能桥梁。模型附加到视图,因此视图可以拥有模型。
检查first C++ example或second C++ example。在第一个是“静态”所有权,而在第二个所有权是更多的挥发性。