Какой смысл Boost :: Signals? - PullRequest
       47

Какой смысл Boost :: Signals?

4 голосов
/ 25 ноября 2010

Во-первых, я абсолютный новичок в программировании, поэтому не смейся надо мной слишком сильно.
Единственное, для чего я видел сигналы, используемые для набора инструментов GUI, и наборы инструментов GUI все идут со своей собственной сигнализацией. Итак, может ли Boost: Signals использоваться с этими инструментами GUI? Это было бы хорошей идеей? Какие еще приложения имеют сигналы?

Ответы [ 4 ]

6 голосов
/ 25 ноября 2010

Сигналы - это реализация обмена сообщениями о событиях, очень похожая на Smalltalk / Objective C Сообщения или События в различных других (например, C #) языках.

Вы можете использовать их для самых разнообразных задач, взгляните на Шаблон наблюдателя

Зачем использовать шаблон наблюдателя?

Преимущества в значительной степени организационные, когда вы работаете с большими приложениями, важно применять шаблоны повторного использования, которые помогают поддерживать согласованность команды разработчиков.

Когда реализация определенного шаблона становится де-факто (или близка к нему), это особенно полезно, потому что это означает, что время подготовки для новых членов команды, скорее всего, будет ускорено, не только если они уже использовали реализацию, но также потому что популярность реализации будет означать наличие широко распространенных ресурсов и документации, доступной для ускорения обучения.

С точки зрения чистого кода ВСЕ шаблоны выглядят раздутыми, но когда вы начинаете понимать, что свыше 60% затрат, связанных с разработкой программного обеспечения, приходится на жизненный цикл обслуживания, стоит того, чтобы дополнительный код приобрел последовательность .

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

4 голосов
/ 26 ноября 2010

Просто мои два цента, сигналы используются не только в (или для) GUI инструментарии. Они используются в тех случаях, когда вы хотите отделить источник данных от получателя (например, шаблон наблюдателя, упомянутый выше). Если вы смешаете эту идею с потоками, вы сможете легко реализовать акторов, что является интересным шаблоном для параллельных задач (например, в Erlang и Scala используются актеры).

2 голосов
/ 26 ноября 2010

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

Обратные вызовына самом деле это просто образец шаблона Observer.

2 голосов
/ 25 ноября 2010

Одним из возможных применений будет реализация из инструментария GUI. Вы бы в основном настроили проводку для получения сообщений (или как они там называются) от собственной системы для генерации сигналов. Оттуда код для маршрутизации и обработки сигналов может быть (по крайней мере, несколько) переносимым.

...