Должно ли addListener проверить метод для повторной регистрации при вызове? Если да, то что должно произойти при обнаружении дубликата?При регистрации на события Java обычно допускаются дубликаты слушателей?
final public class exampleCanFire {
public void addFooListener(FooListener listener) {
// Before adding listener to private list of listeners, should I check for duplicates?
}
}
Хотя я Не знаю ответа, с точки зрения дизайна библиотеки, конечно, единственная согласованная вещь для библиотеки - зарегистрировать всех слушателей (включая дубликаты)? В противном случае, если две разные подсистемы случайно зарегистрировали один и тот же прослушиватель, тогда первый, кто отменит регистрацию, испортит другую подсистему - правильно? –
Было бы бесполезно, так же как получать каждое событие дважды, потому что кто-то еще повторно регистрирует вашего слушателя. – Zed
@ Zed: Да, но я бы сказал, что это вина человека, который небрежно объединил две подсистемы. Должна быть ответственность человека, который объединяет несвязанные «равные» подсистемы, чтобы знать, как они будут взаимодействовать, поскольку альтернатива для каждой подсистемы заключается в том, чтобы знать, как взаимодействовать с любой другой несвязанной «одноранговой» подсистемой, которая в настоящее время существует или может существовать в будущее, и это нежизнеспособно. –