我总是很难在对象之间发送消息。考虑测验对象的层次结构:
所以:
测验有一个问题清单
一个QuestionList有多个问题
一个问题有一个答案清单
答案清单有多个答案
点击答案时(我们在这里谈论Flash AS3):
答案通知AnswerList
AnswerList通知问题
问题通知QuestionList
QuestionList通知测验。
换句话说,消息冒出来了。这是可能的,因为我通过它的'child'的构造函数传递每个'parent'对象。但我想我在某个地方读到了对象不应该知道它的父级。我应该采取另一种方法吗?
感谢。
答案 0 :(得分:2)
是的,您不应该将子对象链接指向其父级。我想你上面解释的情况是显示层次结构。在这种情况下,您可以使用事件系统做得更好。您可以创建调度的自定义事件,当事情发生时,父级会向事件添加侦听器以处理这些事件。
您的结构的可能事件场景例如如下:
答案 1 :(得分:1)
您可以查看Observer模式。在此设计模式中,对象可以侦听对象的更改(或事件)。通过这种方式,消息可以在没有孩子直接知道他们的父母的情况下冒泡。他们只知道他们必须通知听众有些事情发生了变化。如果需要,您甚至可以让多个对象听取答案。