J'ai déjà posé des questions sur la manière correcte d'accéder aux variables membres présentes dans le projet. Dans le projet, j'ai une classe dérivée de CWinapp, classe CMainFrm, une liste de différentes classes d'affichage. Cependant, actuellement, j'ai des instances de différentes classes définies par l'utilisateur instanciées dans la classe dérivée de CWinApp, tandis que le reste des classes utilise un pointeur obtenu à partir de la fonction AfxGetApp(), puis accède aux différentes classes définies par l'utilisateur. Certains membres de la communauté sur le groupe de discussion MFC m'ont dit que c'est un très mauvais design (c'est-à-dire que le parent ne devrait rien savoir d'une classe d'application, d'une classe de vue ou d'une classe de document). Cependant, je ne sais pas comment je peux accéder à différentes classes définies par l'utilisateur sans utiliser cette conception. Ce serait génial d'entendre quelques suggestions car je ne connais pas assez le MFC pour trouver des termes de recherche appropriés.Structure du document Single Document
Répondre
« (le parent ne doit pas savoir quoi que ce soit au sujet d'une application de classe, classe de vue, ou classe de document) »
Je ne suis pas sûr que je comprends cette phrase, que voulez-vous dire par « parent » ici ?
De toute façon, à mon avis, le design que vous décrivez n'est pas vraiment un problème. C'est un compromis: transmettez-vous ces classes à toutes les fonctions qui en ont besoin, compliquant leur utilisation et API, ou les stockez-vous comme une sorte de variables globales comme vous le faites? Cela dépend des données auxquelles vous accédez, et à quelle fréquence. Les données nécessaires dans de nombreux endroits peuvent tout aussi bien être «globales». Il existe plusieurs façons de rendre les données 'globales': en faire un membre de CWinApp (c'est-à-dire votre classe dérivée de CWinApp), ou de CMainFrame, ou faites-vous une véritable 'variable globale', ou faites-vous faire un singleton, ...
Le problème avec les variables globales est qu'il devient difficile de savoir qui l'accède quand et où. Si vous faites des données en tant que membre de CWinApp, vous pouvez y accéder via une fonction accesseur et en suivre l'accès (via les messages de logs, les points de rupture, ...). Cela atténue, à mon avis, la plupart des problèmes associés aux variables globales. Ce que je fais habituellement de nos jours est d'utiliser un singleton Loki.
La raison qui est indiquée dans votre message pour ne pas faire de données un membre de CWinApp, comme un problème de découplage, est (dans le contexte que vous l'avez présenté) un peu étrange imo. Si certaines classes ont besoin d'un accès, elles devront quand même connaître ces structures de données, et leur emplacement de stockage n'est pas pertinent. Peut-être que c'est juste parce que je ne connais pas les détails de votre conception.
- 1. Autre structure de document dans JTextPane?
- 2. Générer le document 2003 document
- 3. Modifications du modèle de document CouchDB?
- 4. Obtenir l'adresse actuelle du document (extension firefox)
- 5. Document Word avec images Taille du fichier
- 6. Chemin du document d'impression avec SSI
- 7. Hpricot, Obtenez tout le texte du document
- 8. Liaison d'un document POCO à un document HTML et génération du résultat en une chaîne
- 9. Importer un document XML
- 10. lecture document word
- 11. Document, format texte
- 12. XPS Document Imprimer Carrelage
- 13. Evénement - Document modifié
- 14. PDF document manipulation
- 15. Sharepoint Document collaboration
- 16. Document imprimable Java A4
- 17. Générateur de document RTF
- 18. Référence fenêtre parent document
- 19. Visionneuse de document Flash
- 20. Convertisseurs WSS et Document
- 21. EDI X12 810 Document
- 22. Document extrait dans SharePoint lors du démarrage du workflow
- 23. Impression du document MHT à l'aide du programme .NET
- 24. comment détecter, au chargement du document html, si le corps du document iframe est prêt à être affiché?
- 25. seconde $ (document) événement .ready jQuery
- 26. Impression d'un document par programme
- 27. Modèle d'état de document Java?
- 28. jQuery (document) .ready() load() aspx
- 29. Création d'un document XMERL dans Erlang
- 30. $ (document) contenu .ready et iframe
J'essaye d'atteindre l'objectif de rendre certaines variables disponibles comme globales en les instanciant dans la classe dérivée de CWinApp. Je suppose que c'est probablement la meilleure façon dont je peux penser en ce moment, par conséquent ne devrait pas investir plus de temps à ce sujet. Merci pour vos commentaires. – stanigator