Domanda

Faccio sempre fatica a inviare messaggi tra oggetti.Considera la gerarchia degli oggetti di un quiz:

  • Quiz
    • Elenco domande
      • Domanda
        • Elenco risposte
          • Risposta

COSÌ:
un quiz ha un elenco di domande
un QuestionList ha più domande
una domanda ha una lista di risposte
una AnswerList ha più risposte

Quando si fa clic su una risposta (stiamo parlando di Flash AS3 qui):
La risposta avvisa AnswerList.
AnswerList notifica la domanda.
La domanda notifica l'elenco delle domande.
QuestionList avvisa Quiz.

In altre parole, il messaggio trabocca.Ciò è possibile poiché passo ogni oggetto 'genitore' attraverso il costruttore del suo 'figlio'.Ma penso di aver letto da qualche parte che gli oggetti non dovrebbero essere consapevoli del proprio genitore.Dovrei adottare un altro approccio?

Grazie.

È stato utile?

Soluzione

Sì, non dovresti fornire agli oggetti figlio collegamenti al loro genitore.Immagino che la situazione che hai spiegato sopra sia una gerarchia di visualizzazione.In tal caso, potresti farlo molto meglio utilizzando il sistema di eventi.Puoi creare eventi personalizzati che vengono inviati quando accadono cose e il genitore aggiungerà ascoltatori agli eventi per occuparsene.

Un possibile scenario di evento per la tua struttura sarebbe ad esempio il seguente:

  • Viene fatto clic sulla risposta (un pulsante) e l'elenco di risposte in ascolto lo nota.
  • La AnswerList invia un evento "risposta", che viene ricevuto dalla domanda.
  • La domanda invia un evento "con risposta" per notificare all'elenco delle domande di contrassegnare questa domanda come con risposta
  • Quando l'Elenco domande ha ricevuto risposta agli eventi di tutte le domande, invia un evento "finito" per indicare al quiz che è stato completato

Altri suggerimenti

Potresti guardare il Osservatore modello.In questo modello di progettazione, gli oggetti possono ascoltare le modifiche (o gli eventi) di un oggetto.In questo modo, i messaggi possono diffondersi senza che i bambini conoscano direttamente i loro genitori.Sanno solo che devono avvisare i loro ascoltatori che qualcosa è cambiato.Se lo desideri, puoi anche avere più oggetti in ascolto delle risposte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top