Actionscript 3 从另一个对象分派事件有意义吗?
我仍在试图找到构建事件流的最佳方法。有人告诉我,所包含的对象应该与其父容器解耦,这样它们就可以在容器之间重用,这很有道理。它们不调用其父函数,而是分派事件。明智 最近,我自己陷入了一种尴尬的境地:从一个包含的对象的父对象发送一个事件。一个对象发送自己的事件似乎更直观。也许我快要触犯德米特的法律了 我正在做的示例:Actionscript 3 从另一个对象分派事件有意义吗?,actionscript-3,oop,events,actionscript,Actionscript 3,Oop,Events,Actionscript,我仍在试图找到构建事件流的最佳方法。有人告诉我,所包含的对象应该与其父容器解耦,这样它们就可以在容器之间重用,这很有道理。它们不调用其父函数,而是分派事件。明智 最近,我自己陷入了一种尴尬的境地:从一个包含的对象的父对象发送一个事件。一个对象发送自己的事件似乎更直观。也许我快要触犯德米特的法律了 我正在做的示例: child.dispatchEvent(新的ChildEvent(ChildEvent.IM_BEING_A_child)) 我在这里感到奇怪是对的,还是一个对象分派另一个对象的事件是
child.dispatchEvent(新的ChildEvent(ChildEvent.IM_BEING_A_child))代码>
我在这里感到奇怪是对的,还是一个对象分派另一个对象的事件是正常的事情?您不一定违反了这里的任何规则-如果dispatchEvent
是一个公共函数,那么您可以从任何您喜欢的地方调用它
如果您想从封装的角度让事情更干净,您可以公开一个显式函数,父级可以调用该函数来发生特定事件-例如:
child.doSomeChildAction();
关于儿童课:
public function doSomeChildAction():void
{
dispatchEvent(new ChildEvent(ChildEvent.IM_BEING_A_CHILD));
}
这样,如果您需要更改子级发送事件的方式、发送的事件类型或子级发送事件时发生的操作,那么所有这些都封装在子类中,这样会更容易管理。您不一定违反了这里的任何规则-如果dispatchEvent
是一个公共函数,那么您可以在任何地方调用它
如果您想从封装的角度让事情更干净,您可以公开一个显式函数,父级可以调用该函数来发生特定事件-例如:
child.doSomeChildAction();
关于儿童课:
public function doSomeChildAction():void
{
dispatchEvent(new ChildEvent(ChildEvent.IM_BEING_A_CHILD));
}
这样,如果您需要更改子级发送事件的方式、发送的事件类型或子级发送事件时发生的操作,那么所有这些都将封装在子类中,因此更易于管理。so,你似乎在说,分派事件更多的是对象自己的责任…不一定-就像我说的,公共函数是公共的-与其说是责任,不如说是代码管理-如果对象分派自己的事件,通常更容易管理后续更改。从面向对象的角度来看,调度自己的事件应该是自己的责任。这里给出的代码是一个很好的例子。但他是对的,如果这是一种公开的调用方法,从技术上讲,这并不是错误的。有一些框架利用了这种能力。我相信我理解,但我不太关心技术的正确性,我仍然希望得到保证,一个对象发送另一个对象的事件更容易混淆,更不清晰,更不传统。如果你这样说,那么是的,正如Ryan所说,从OO的角度来看,对象应该分派自己的事件,否则你就破坏了封装——让对象分派彼此的事件可能会更加混乱,这取决于上下文。因此,你似乎在说分派其事件更多的是对象自己的责任……不一定——就像我说的,公共函数是公共的——与其说是责任,不如说是代码管理——如果对象分派自己的事件,通常更容易管理后续的更改。从OO的角度来看,分派自己的事件应该是对象自己的责任。这里给出的代码是一个很好的例子。但他是对的,如果这是一种公开的调用方法,从技术上讲,这并不是错误的。有一些框架利用了这种能力。我相信我理解,但我不太关心技术的正确性,我仍然希望得到保证,一个对象发送另一个对象的事件更容易混淆,更不清晰,更不传统。如果你这样说,那么是的,正如Ryan所说,从OO的角度来看,对象应该调度它们自己的事件,否则就会破坏封装——让对象调度彼此的事件可能会更加混乱,这取决于上下文。