В настоящее время я использую шаблон конвейера для разработки шлюза API, причем на разных этапах выполняются запросы к различным службам (http, sockets, amqp, ...).
У меня есть база класс, RequestStage, с некоторыми подклассами, HttpStage, SocketStage, AmqpStage. Эти классы расширяют RequestStage, потому что они могут иметь разные уникальные параметры для каждого из своих запросов.
Проблема заключается в том, что каждый этап / событие (подкласс) должен быть вызовом либо промежуточного API, либо нижестоящего API. Если это промежуточный программный интерфейс API, то должно быть условие отказа при коротком замыкании конвейера.
Как мне вписать это дополнительное поле / черту? Если класс stage / event вызывает запрос API промежуточного программного обеспечения, то он должен содержать дополнительное поле «failCondition», но как я могу реализовать это чисто, поскольку мое наследование основано на типе протокола запроса, а не на типе службы?