Лучшая практика архитектуры слотов сигналов - PullRequest
1 голос
/ 29 апреля 2009

Я использую libsigc ++ для подключения приложения, и не уверен, как проще это сделать.

Существует существующая иерархия объектов, которая управляет уровнем данных, и объект верхнего уровня предоставляет все функции. Пока все хорошо.

К этому я добавляю иерархию объектов GUI, а в объекте приложения я подключаю их вместе с сигнальными соединениями. Чтобы установить соединение, мне нужны указатели на отправителя и получателя.

Теперь, могу ли я подключить дочерний виджет, находящийся далеко внизу дерева, напрямую, требуя, чтобы указатели передавались вверх и вниз по дереву?

Или я прохожу кропотливые процессы подключения сигналов и слотов на каждом шаге в цепочке?

С одной стороны, проходящие указатели нарушают разделение, которое покупает модель sig-slot. С другой стороны, создание соединений на каждом этапе не похоже на рифму с предполагаемой «телепатией событий», которую должны обеспечивать sig-слоты.

Какой из них кто-то испытал с этой моделью, рассмотрит подход по умолчанию?

1 Ответ

1 голос
/ 29 апреля 2009

Лично я не вижу никаких проблем, пропуская слои с помощью механизма сигнал / слоты. Я предпочитаю видеть это так: компонент посылает сигналы в дикую природу, и тот, кто интересуется этими сигналами, может их слушать.

Пара советов: избегайте отправки сигналов, которые являются слишком общими, и не полагайтесь на порядок выполнения временных интервалов (если для данного сигнала вызывается много временных интервалов).

...