Question

J'ai beaucoup de mal à comprendre comment les classes doivent communiquer entre elles. Dans un projet en cours, beaucoup de classes sont tellement enracinées que j'ai commencé à créer des singletons et des champs statiques (d'après ce que j'ai compris, c'est une mauvaise idée).

Il est difficile d’exprimer mon problème et, comme d’autres programmeurs, n’a pas ce problème. Voici une image d'une partie du programme: Diagramme de classes

  • ex1. Lorsque je crée un objet Destination, il nécessite des informations d’Infopanel. Comment faire cela sans créer un getter statique dans InfoPanel?

  • ex2. DestinationRouting est utilisé dans toutes les branches. Dois-je vraiment le faire en entrée et le transmettre ensuite dans toutes les branches?

Je ne sais pas si cela a du sens pour tout le monde :) C’est un problème récurrent dans chaque projet.

Était-ce utile?

La solution

Il y a trop peu d'informations ici. Par exemple, je ne sais même pas si MapPanel et InfoPanel devraient être comme ils sont. Je serais tenté d'essayer le motif de décorateur pour ce qu'il vaut. Je ne sais pas non plus pourquoi un auditeur est un enfant d'un panel. Nous devons savoir quels sont ces objets et de quel système il s’agit.

Autres conseils

Après avoir examiné votre diagramme de classes, je pense que vous appliquez un état d'esprit procédural à un problème OO. Vos singletons semblent contenir tous les comportements qui agissent sur les enregistrements de votre modèle de domaine et les enregistrements ont très peu de comportement.

Afin de mieux comprendre votre modèle objet, je voudrais essayer de classer les relations (lignes) dans votre diagramme de classes comme l'une de "is-a", "has-a", etc., etc. que vous pouvez mieux voir ce que vous avez.

La destination a besoin d'informations provenant d'InfoPanel, mais probablement pas de toutes les informations. Est-il possible de ne transmettre que les informations nécessaires à Destination au lieu d’InfoPanel?

Quel état est capturé dans la classe DestinationRouting qui l'oblige à être un singleton? Cette information appartient-elle ailleurs?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top