J'ai lu sur la façon de mettre en œuvre MVC appropriée dans une application C++ et essentiellement venu au point qu'il ya 2 façons de mettre en œuvre cette:C++ motif d'observateur « bidirectionnel »
- modèle d'observateur
- signal/fente
Cependant, dans les deux cas, les exemples que je lis tous suivent une structure dans laquelle le sujet peut changer et notifier l'observateur (s), mais l'observateur ne change jamais le sujet. Maintenant, ce cas pose quelques "problèmes". Disons que j'ai une classe appelée Text (un composant de modèle), une autre nommée TextEditor (un composant de GUI) qui affiche quelque fois «Text» ET devrait pouvoir la modifier et quelques autres classes qui peuvent modifier le ' Texte aussi. À droite, donc j'utilise un modèle d'observateur, faites de 'Text' le sujet et 'TextEditor' l'observateur. Pas de gros problème.
Si 'Text' est modifié d'une manière ou d'une autre, Text appelle Text :: notify() et mon TextEditor reflétera la modification. Bien. Maintenant, que se passe-t-il si j'utilise TextEditor pour modifier le texte? 'TextEditor' connaît le terme 'Text', donc il appelle quelque chose comme textInstance.setText (...) ... et à la fin de setText, les appels 'Text' notifient, et 'TextEditor' est notifié de un changement il s'est fait! 'Text' ne peut même pas envoyer une notification à tout le monde sauf à 'TextEditor' car ce n'est pas supposé savoir à propos de ses observateurs!
J'ai le sentiment que ce n'est pas juste, pas "propre" même des raisons de performance. Je parierais qu'il y a une meilleure façon de l'implémenter mais je suis coincé. Quelqu'un a des indices?
Je ne suis pas vraiment à la recherche d'une implémentation C++ pré-faite, mais plutôt d'une compréhension de la façon dont je devrais voir les choses correctement.
explananation Très clair, je vous remercie – Dinaiz