Что такое паттерн Pipeline (Конвейер) и его применение?

«Что такое паттерн Pipeline (Конвейер) и его применение?» — вопрос из категории Паттерны, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Ключевые характеристики:

  • Разделение ответственности: Каждая стадия выполняет одну четкую задачу.
  • Повторное использование: Стадии можно комбинировать в разные конвейеры.
  • Обработка потоков данных: Эффективен для поточной обработки больших объемов данных.

Типичные применения:

  • Конвейеры сборки и деплоя (CI/CD).
  • Обработка HTTP-запросов в веб-фреймворках (middleware chain).
  • Потоковая обработка данных (ETL-процессы).
  • Компиляторы (лексический анализ -> синтаксический анализ -> генерация кода).

Пример на псевдокоде:

// Определяем стадии
Stage cleanData = input -> input.trim().toLowerCase();
Stage validate = input -> input.length() > 0 ? input : throw Error;
Stage process = input -> input + "_processed";

// Строим конвейер
Pipeline pipeline = new Pipeline(cleanData)
    .addStage(validate)
    .addStage(process);

// Выполняем
String result = pipeline.execute("  SomeData  "); // "somedata_processed"