Почему списки слушателя (например, в Java те, которые используют addXxxListener()
и removeXxxListener()
зарегистрировать и не зарегистрировать слушателей) названный списками, и обычно реализовываемый как Списки? Не был бы Набор быть лучшим соответствием, с тех пор в случае слушателей существует
Это - просто вопрос традиции? Наборы являются некоторыми списками под капотом так или иначе. Есть ли различия в производительности? Выполняет итерации через a List
быстрее или медленнее, чем итерация через a Set
? Любой берет более или менее память? Различия, конечно, почти незначительны.
Какого рода набор? Должны ли все слушатели реализовывать equals и hashCode, чтобы использовался хэш-набор, или подойдет хэш-набор идентичности? Стоит ли сложность добавления слушателя в список дважды? Есть ли такой же простой механизм для обеспечения безопасности набора от добавления или удаления слушателей во время вызовов их обработчиков?
Возможно, есть некоторые различия в производительности, но дизайн, безусловно, сложнее, и он заставляет принимать решение о множественном добавлении-множественном удалении в библиотеке, а не оставлять его на усмотрение приложения.