У меня есть приложение, которое состоит из нескольких различных сборок, одна из которых содержит различные интерфейсы, которым подчиняются классы, и посредством которых классы взаимодействуют через границы сборок. Существует несколько классов событий стрельбы, и несколько, которые заинтересованы в этих событиях.
Мой вопрос таков: является ли хорошей практикой реализация какого-либо центрального EventConsolidator? Это было бы тесно связано, так как для этого нужно было бы знать, что каждый класс (или, по крайней мере, интерфейс) вызывает событие, и каждый потребитель события должен иметь ссылку на EventConsolidator для подписки.
В настоящее время у меня есть ситуация, когда класс A знает класс B (но не C), класс B знает класс C и т. Д. Затем, если C запускает событие, B должен взять его и запустить собственное событие, чтобы A реагировать. Такие цепочки могут быть довольно длинными, и может случиться так, что B заинтересован только в событии, чтобы передать его. Я не хочу, чтобы A знал о C, поскольку это нарушило бы инкапсуляцию.
Что такое хорошая практика в этой ситуации? Централизовать события, или ухмыляться и нести это и определять события в каждом промежуточном классе? Или каковы критерии принятия решения? Спасибо!
Редактировать: Здесь - это еще один вопрос, задающий по существу то же самое.