2

Ich verstehe MVC-Muster gut genug, aber es gibt überraschend geringe Menge an Informationen für die praktische Umsetzung in C++. Für diese Anwendung verwende ich wxWidgets und boost::depedency_injection, aber die Situation sollte generisch sein.Objektbesitz in C++ (MVC-Muster)

In C++ 11/14 haben wir strenge Regeln für Objektbesitz: Objekt ist entweder über Eigentümer verteilt oder einzigartig für einen Besitzer. Wir haben auch Zeiger im alten Stil für Objekte, die nicht im Besitz von callee sind.

Also, die Frage ist: Wer besitzt welches Objekt (Modell/View/Controller) in MVC in C++?

Meine Vermutung jetzt:

Views besitzt controllers die von boost:di als unqiue_ptr injiziert werden. Controllers sind im Besitz von views und tun nicht speichern Zustand in jeder Form (nur Verfahren, die auf models Katalog ausgeführt wird). führen und liefern Daten zu speichern, für controllers Operationen

Ist es richtig, für MVC Models selbst über die Injektion sie als shared_ptr zwischen allen controllers geteilt und werden verwendet?

+0

Warum abstimmen, um zu schließen? – PiotrK

+0

Nun, es gibt so viele MVC-Varianten, dass es schwer zu beantworten ist. Aber nein, Controller gehören nicht Ansichten, es sollte das Gegenteil sein, denn Controller ist die funktionale Brücke zwischen Ansicht und Modell. Model ist an Ansichten angehängt, somit kann Views Model besitzen. Dies kann Ihnen http://stackoverflow.com/questions/6929957/mvc-approach-with-c helfen. –

+0

@ Jean-BaptisteYunès Ich habe diese Frage und Antwort bereits gelesen, aber es ist nur eine Theorie von MVC. Und ich frage nach implementierungsspezifischen Problem – PiotrK

Antwort

1

Nun, es gibt so viele MVC-Varianten, dass es schwer zu beantworten ist. Aber nein, Controller gehören nicht Ansichten, es sollte das Gegenteil sein, denn Controller ist die funktionale Brücke zwischen Ansicht und Modell. Model ist an Ansichten angehängt, somit kann Views Model besitzen.

Untersuchen Sie das first C++ example oder das second C++ example. In der ersten gibt es "statische" Eigentumsrechte, während in der zweiten Besitzverhältnisse viel flüchtiger sind.

+0

Was ist der richtige Weg, um Controller in diesem Ansatz dynamisch zu erstellen? – PiotrK