Трубопроводная архитектура

Как можно было бы реализовать реализацию конвейерной архитектуры с точки зрения ООП?

Чтобы лучше объяснить себя:

Source -> Filter -> Filter -> Filter -> Sink

Допустим, у нас есть базовый класс с именем PipelineStage. Как реализовать фильтр, источник и приемник?

У меня есть 2 идеи:

С интерфейсами ISource и ISinkИнтерфейсы ISink

С подклассами Sink и Source из Filterподклассы из фильтра

0

Решение

Источник и Раковина кажутся чрезмерными и усложняют общую структуру. Они не должны быть фильтрами.

Источник источник и это его функция. Если знает, где взять данные и как передать их в конвейер. Не заставляйте его быть чем-то другим, кроме источника.

То же самое о раковине.

Если вы хотите что-то проверить входные данные — добавьте дополнительный фильтр проверки.

0

Другие решения

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

0

По вопросам рекламы [email protected]