Programación orientada a objetos:problemas para notificar a otros objetos en la jerarquía de
-
13-09-2019 - |
Pregunta
Siempre tengo problemas con el envío de mensajes entre objetos.Considerar la jerarquía de objetos de un cuestionario:
- Quiz
- QuestionList
- Pregunta
- AnswerList
- Respuesta
- AnswerList
- Pregunta
- QuestionList
Así:
la Prueba tiene un QuestionList
un QuestionList tiene varias Preguntas
una Pregunta tiene un AnswerList
un AnswerList tiene múltiples Respuestas
Cuando una Respuesta se presenta clic (estamos hablando de Flash AS3 aquí):
Respuesta notifica AnswerList.
AnswerList notifica a la Pregunta.
Pregunta notifica QuestionList.
QuestionList notifica a Prueba.
En otras palabras, el mensaje de las burbujas.Esto es posible ya que yo paso de cada uno de los 'padres' del objeto a través del constructor de que es un "niño".Pero creo que leí en alguna parte que los objetos no deberían ser conscientes de su padre.Debo tomar otro enfoque?
Gracias.
Solución
Sí, usted no debe dar a los objetos secundarios enlaces a sus padres.Supongo que la situación en la que se explicó anteriormente es una jerarquía de visualización.En ese caso, podría hacerlo mucho mejor utilizando el sistema de eventos.Puede crear eventos personalizados que se envían, cuando las cosas suceden y el padre tendría que añadir a los oyentes a eventos para cuidar de aquellos.
Un posible evento escenario de su estructura sería por ejemplo el siguiente:
- Respuesta (un botón) se hace clic en, y la escucha AnswerList avisos que.
- El AnswerList distribuye una "respuesta" del evento, que es recibida por la pregunta.
- La Pregunta envía una "respuesta" evento para informar a la Lista de preguntas para marcar la pregunta como respondida
- Cuando la Lista de preguntas ha recibido respondió eventos por todas las preguntas, distribuye un "acabado", evento de decirle a la Prueba de que se termine
Otros consejos
Es posible mirar las href="http://en.wikipedia.org/wiki/Observer_pattern" Observador patrón. En este patrón de diseño, los objetos pueden escuchar los cambios (o eventos) de un objeto. De esta manera, los mensajes puede propagarse por los hijos, sin saber a sus padres directamente. Ellos sólo saben que tienen que notificar a sus oyentes que algo ha cambiado. Usted puede incluso tener varios objetos de escuchar respuestas si lo desea.