2013-02-22 2 views
0

Недавно я задал простой дизайн вопрос в интервью:Проектирование трубопроводов для обработки объектов

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

Как создать такую ​​систему? Как будет запускаться следующая задача? Как данные одной задачи могут быть заданы для следующей задачи?

Любые идеи? Это было задано в интервью на C++. Таким образом, дизайн, ориентированный на C++, будет хорошим.

+0

* «ленивая инициализация - это тактика задержки создания объекта, вычисления стоимости или каких-либо других дорогостоящих до первого раза, когда это необходимо ». * Это первое, что приходит мне на ум. –

ответ

3

Это вопрос интервью, поэтому они хотят, чтобы вы задумались вслух и продемонстрировали глубину своего опыта. Нет ни одного «дизайна» или даже «ответа», и поэтому вы должны уделять столько внимания различным случаям, сколько сможете.

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

  • Остерегаться узкие места
  • Имея общий протокол между задачами трубопровода
  • Может трубопровод отклонить входы, или даже передавать их в обратном направлении, как вы справляетесь с этим
  • это требует ли много преобразований типов
  • Может вы его распараллеливаете и подаете больше данных в трубопровод еще до того, как его первые позиции закончили
Смежные вопросы