Передача сообщений между модулями
От: kiple Россия  
Дата: 28.08.07 20:58
Оценка:
Есть довольно простая архитектура (C#): 1 главный объект Kernel и несколько модулей, которые соединены с ним. Каждый модуль содержит методы и события (event). Генерация событий в одних модулях должна порождать вызов методов в других. Сигнатуры всех методов и событий различны. Сейчас все это взаимодействие реализовано в Kernel'е набором методов-подписчиков на сообщения. Как-то все это не эстетично. Существуют ли более симпатичные решения?
class ModuleN
{
    public event EventHandler<Args1> Event1; 
    public event EventHandler<Args2> Event2; 
    
    public void Method1(...);
    public void Method2(...);
}

... // Другие модули

class Kernel 
{
    private Module1 _module1;
    private Module2 _module2;
    private Module2 _module3;
        
    public void Init() 
    {
        _module1.Event1 += _module1_Event1;
        ...
    }
    
    private void _module1_Event1(object sender, Args1 args) 
    {
        _module2.Method2(args);
        _module3.Method1(args);
    }
    
... // Остальные обработчики
}
... << RSDN@Home 1.2.0 alpha rev. 728>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.