В системе, над которой я сейчас работаю, есть много компонентов, которые определены как интерфейсы и базовые классы. Каждая часть системы имеет определенные точки, где они взаимодействуют с другими частями системы.
Например, компонент чтения данных подготавливает некоторые данные, которые в конечном итоге должны быть переданы в часть обработки данных, компонент связи должен запрашивать у различных компонентов их статус для передачи на внешний адрес и т. Д.
В настоящее время я склеиваю эти части системы вместе, используя «божественный объект» или объект с глубоким знанием различных частей системы. Он регистрируется с событиями здесь и переносит результаты в методы там, создает здесь метод обратного вызова и возвращает результат этого метода туда, и пропускает много запросов через многопоточную очередь для обработки, потому что он «знает», что определенные действия работать на потоках STA и т. д.
Хотя это удобно, меня беспокоит, что этот тип знает так много о том, как устроены все остальные в системе. Я бы предпочел более общий концентратор, которому могут быть предоставлены экземпляры, которые могут предоставлять события или методы или обратные вызовы, или которые могут использовать их.
Я узнал больше о возможностях IObservable / IObserver реактивной платформы, и они внедряются в .NET 4.0 (я полагаю).
Могу ли я использовать этот шаблон, чтобы помочь заменить мой "объект бога"? Как мне это сделать? Есть ли ресурсы для использования этого шаблона для этой конкретной цели?