Question

Je lutte toujours avec l'envoi de messages entre les objets. Considérons la hiérarchie des objets d'un jeu-questionnaire:

  • Quiz
    • QuestionsListe
      • Question
        • AnswerList
          • Réponse

:
un quiz a une QuestionsListe
un QuestionsListe a plusieurs questions
une question a un AnswerList
un AnswerList a plusieurs réponses

Lorsqu'une réponse se cliquée (on parle ici Flash AS3):
Réponse informe AnswerList.
AnswerList informe la question.
Question informe QuestionsListe.
QuestionsListe avertit Quiz.

En d'autres termes, le message bouillonne. Ceci est possible car je passe chaque objet « parent » par le constructeur de celui-ci de « enfant ». Mais je pense que je l'ai lu quelque part que les objets ne doivent pas être au courant de son parent. Dois-je prendre une autre approche?

Merci.

Était-ce utile?

La solution

Oui, vous ne devriez pas donner à l'enfant des objets liens vers leurs parents. Je suppose que vous la situation que vous avez expliqué ci-dessus est une hiérarchie d'affichage. Dans ce cas, vous pouvez le faire bien mieux d'utiliser le système d'événements. Vous pouvez créer des événements personnalisés qui sont distribués, quand les choses se passent et le parent ajouterait des auditeurs à des événements pour prendre soin de ceux-ci.

Un scénario d'événement possible pour votre structure serait par exemple les suivantes:

  • Réponse (un bouton) se cliqué, et le AnswerList d'écoute constate que.
  • Le AnswerList envoie un événement "répondu", qui est reçu par la question.
  • La question envoie un « répondu » événement pour avertir la liste des questions à l'occasion de cette question une réponse
  • Lorsque la liste des questions a reçu répondu à toutes les questions par les événements, il envoie un événement « fini » de dire au questionnaire, qu'il est terminé

Autres conseils

Vous pouvez regarder les modèle. Dans ce modèle de conception, les objets peuvent écouter les modifications (ou événements) d'un objet. De cette façon, les messages peuvent bouillonner sans les enfants connaissant leurs parents directement. Ils savent juste qu'ils doivent informer leurs auditeurs que quelque chose a changé. Vous pouvez même avoir plusieurs objets d'écoute des réponses si vous voulez.

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