Итак, я пишу код для класса, который войдет в библиотеку, которая будет использоваться другими.Этот класс будет перехватывать и обрабатывать входящие сообщения (детали не важны, но он использует библиотеку activemq-cpp).Схема этого потребительского класса:
class MessageConsumer {
...
public:
void runConsumer();
virtual void onMessage(const Message* message);
}
, где runConsumer()
устанавливает соединение и начинает прослушивание, и onMessage()
вызывается при получении сообщения.
У меня такие вопросы:Люди, которые будут использовать этот код, будут по-своему обрабатывать разные сообщения.Как я могу оставить MessageConsumer
универсальным, но предложить такую гибкость, сохраняя их код простым?
Два варианта:
- Должны ли они наследовать новый класс от
MessageConsumer
и написатьсобственные onMessage()
? - Должны ли они передавать указатель на функцию обработки сообщений на
MessageConsumer
?
Как вы думаете, какой вариант лучше и почему?
Спасибо!