如果addListener方法调用时检查重复的注册?如果是这样,发现重复时会发生什么?注册Java事件时,通常允许重复侦听器吗?
final public class exampleCanFire {
public void addFooListener(FooListener listener) {
// Before adding listener to private list of listeners, should I check for duplicates?
}
}
尽管我不知道从图书馆设计的角度看,答案是肯定的,图书馆唯一一致的做法是注册所有听众(包括重复内容)?否则,如果两个不同的子系统偶然注册了同一个监听器,那么第一个注销它将会弄乱另一个子系统 - 对吗? – 2009-08-24 09:23:55
它会像收到每个事件两次一样,因为其他人重新注册您的监听器。 – Zed 2009-08-24 09:26:07
@Zed:是的,但我认为那是不小心组合了两个子系统的人的错。它必须是组合无关“对等”子系统以了解它们将如何相互作用的人的责任 - 因为替代方案是让每个子系统知道如何与当前存在或可能存在的每个其他无关“对等”子系统交互未来,这是不可行的。 – 2009-08-24 11:22:04