OPPURE:problemi a notificare altri oggetti nella gerarchia
-
13-09-2019 - |
Domanda
Faccio sempre fatica a inviare messaggi tra oggetti.Considera la gerarchia degli oggetti di un quiz:
- Quiz
- Elenco domande
- Domanda
- Elenco risposte
- Risposta
- Elenco risposte
- Domanda
- Elenco domande
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.
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.