Время от времени меня посещает такая мысль. Почему бы в ООП не ввести абстракцию эфира? Пусть объект посылает сообщение не конкретному объекту, а всем сразу, одновременно, а они, слушатели, уже сами решают, как его обрабатывать, и обрабатывать ли вообще. Пусть это будет основа, далее мы можем создавать разные эфиры, и подключать к ним те или иные объекты, так что один объект может слушать несколько эфиров сразу.
Собственно, частный случай этого уже есть, это паттерн Observer. Но можно сделать этот принцип general-моделью.
Данная модель подкупает своей простотой, изяществом, и естественностью. Последнее особенно бросается в глаза, ведь ООП — это моделирование реального мира, а в реальном мире так оно и есть — все «сообщения» широковещательны по-дефолту. И, кстати, данная модель параллельна и асинхронна по своей сути — все объекты могут обрабатывать одно сообщение одновременно.