В случае обычного приложения J2SE, где издатели событий и подписчики событий являются объектами в одном и том же пространстве процесса, это будет шаблон Observer.
Подписчики обычно сообщают издателю, что они хотятпрослушивать события, вызывая определенный метод, такой как addListener (), и реализуя определенный интерфейс.
Итак, в вашем примере, скажем, мы создаем интерфейс NumberEventListener, у которого есть один метод onNumberEvent (int number)
Все ваши слушатели будут реализовывать NumberEventListener и вызывать addListener () для вашего объекта издателя.
Фильтрация может применяться как на стороне издателя, так и на стороне слушателя.Таким образом, для вашей реализации вы можете использовать метод addListener () addListener (слушатель NumberEventListener, int min, int max), и ваш слушатель будет вызываться только в том случае, если число находится между min и max.Однако это не типичная реализация, потому что это делает код издателя более сложным, и вы не можете быть по-настоящему гибким.
В таком примере, как правило, слушатели получают все соответствующие события и отбрасывают те, которые не являютсяинтересует. Однако это мало зависит от реального сценария реальной жизни.
Будет ли слушатель получать уведомления «в одно и то же время» или последовательно, зависит от того, вызывал ли слушатель последовательно или в отдельных потоках издательсобытия.