Паттерн Pipes-and-Filters
Зміст
Призначення паттерна Pipes-and-Filters
![]()
- Під час обробки потоків даних, кожен крок обробки здійснюється за допомогою фільтрів, з’єднаних каналами передачі даних.
- Підключення фільтрів в різній комбінації дає різні способи обробки потоків даних.
Приклад паттерна Pipes-and-Filters

Мал 1. Парсер мови програмування
Проблеми паттерна Pipes-and-Filters
– Обробка потокових даних, природно підрозділяються на кілька етапів.
– Може знадобитися розбиття завдання на етапи.
– Виконання різних етапів на різних процесорах.
– Повідомлення: Стандартизація структур даних між етапами.
Рішення паттерна Pipes-and-Filters
– Фільтр це послідовний етап обробки даних.
– Введення з джерела даних.
– Виведення до результату.
– Послідовність взаємодії фільтрів від джерела даних до виводу даних називається трубопроводом.
Структура паттерна Pipes-and-Filters
– Фільтр є блок обробки даних, який використовується в трубопроводі.
– Труби визначають зв’язок між фільтрами, між джерелом даних і першим фільтром, а також між останнім фільтром і виводом даних.
– Джерело даних забезпечує програму необхідними даними.
– Результуючі дані збирають результати з кінця трубопроводу.
Функціональність паттерна Pipes-and-Filters
Сценарій 1

Сценарій 2

Сценарій 3

Сценарій 4

Переваги паттерна Pipes-and-Filters
– Не використовувати проміжні файли для збереження проміжних результатів.
– Можна легко замінити фільтри.
– Якщо потік даних має стандартний формат, фільтри можуть бути розроблені незалежною.
– Додаткові фільтри дозволяють розпаралелювання.
Недоліки паттерна Pipes-and-Filters
– Важко використовувати глобальні данні.
– Розпаралелювання менш корисне, ніж може здатися.
– Використання фільтрів знижує ефективність передачі данних.
– Важко зрозуміти, що робити з помилками.