Труба и фильтр - это приложение split-et-impera , которое с помощью модульности нацелено на простоту реализации и универсальность за счет конфигурации задействованных модулей.
Он находит наибольшую полезность при решении проблемы, которая включает несколько прогонов обработки исходного потока или объекта или сигнала, и запрашивает создание модифицированного потока или объекта или сигнала того же типа.
Он основан на простых небольших единицах обработки, называемых filter s, все они следуют одному и тому же контракту (они получают на входе один и тот же тип объекта / потока и необязательные параметры и возвращают обработанный поток / объект ). Каждый вход фильтра может быть подключен к (другому или также самому другому) выходу фильтра или к источнику (называемому pump ), аналогично каждый выход фильтра может быть подключен к входу фильтра или к архитектуре. возврат объекта / пара (называемый раковина ). Блоки соединения называются pipe s и используются классом менеджера для маршрутизации потока / объекта / сигнала через различные этапы обработки, выполняемые в фильтрах.
Соглашение при указании контракта заключается в том, что каждый фильтр может действовать автономно, ничего не зная ни о других фильтрах, ни об обработке всего потока. Это означает, что фильтры также можно прозрачно менять местами, получая разные конечные результаты.
В то время как экземпляры фильтров могут работать одновременно в разных потоках, конвейер и шаблон фильтра обычно не используются для одновременной работы, поскольку каждый фильтр в большинстве случаев требует доступа к одному и тому же ресурсу.
- пример программного обеспечения: фильтры при обработке изображений
- пример из реальной жизни: эффекты педали, обрабатывающие звуковой сигнал между гитарой и усилителем.