Я проектирую модуль C++. Этот модуль может получать 3 разных типа запросов: Request-A, Request-B и Request-C.
Для каждого типа у меня есть соответствующий класс обработчика: RequestHandler-A, RequestHandler-B и RequestHandler-C (все они реализуют интерфейс IRequestHandler).
Каждый обработчик должен выполнить определенные действия для выполнения своего запроса.
Например, RequestHandler-А должен выполнять их в последовательности:
Действие-1
Действие-2
Действие-3
Действие-4
Действие-5Проектирование классов C++ с частично распространенными реализациями
RequestHandler-B, нужно выполнить эти в последовательности:
Действие 1-
Действие 3-
Действие-5
RequestHandler-с необходимо выполнить их в последовательности:
Действие 4-
Действие 5-
В результате одного действия используются следующим.
Я изо всех сил пытаюсь разработать эти классы, чтобы реализации общих действий были повторно использованы через обработчики. Есть ли какие-либо шаблоны дизайна, которые можно применять здесь? Возможно, шаблон шаблона шаблона может быть возможностью, но я не уверен. Любые предложения были бы весьма признательны.
PS: Чтобы сделать вещи более интересными, есть также требование, когда, если Action-2 терпит неудачу, мы должны повторить его с разными данными. Но, может быть, я слишком далеко задумываюсь.
Это облегчило бы жизнь, если бы действия были просто свободными функциями. Шаблон метода шаблонов действительно плохое разделение беспокойства. –