Я создаю API на основе событий, где пользователь может подписаться на событие, добавляя объекты слушателя (как это обычно бывает в Java или C #). Когда событие инициируется, все подписанные слушатели вызываются с информацией о событии.
Сначала я решил не добавлять прослушиватель событий более одного раза. Если добавляется прослушиватель, который уже существует в коллекции прослушивателей, он не добавляется снова. Однако, подумав об этом еще раз, кажется, что большинство структур, основанных на событиях, на самом деле этого не предотвращают. Был ли мой первоначальный инстинкт неправильным? Я не уверен, куда идти. Я думаю, я думал, что предотвращение добавления существующего слушателя поможет избежать распространенной ошибки программирования. С другой стороны, он также может скрывать ошибку, которая приводит к многократному запуску кода, а это не так.