M>Паттерн Observer. Subject — рассылаеющий обьект.Вариант 1. Таки брать информацию из сабжекта. Вариант 2. Параметр сообщения сделать ТОbjectom. И структур не будет и механихзм обсервинга менять не надо и можно расширять.
1. Это не Observer.
2. Задача именно и состоит в том, чтобы отказаться от скрытия типа на этапе компиляции и убрать бесконечные проверки типа и приведения из слушателей.
На самом деле все прозрачно, но необходимость наличия кучи списков в одном файле (или, что еще хуже, нескольких десятков файлов на каждый тип сообщения) меня сильно настораживает.