во встроенной компонентной системе, у меня есть пользовательский интерфейс IQueue, который может получить конкретную системную реализацию, например, FreeRTOSQueue.
class IQueue { ... virtual void push(...) = 0; ... };
class FreeRTOSQueue : public IQueue { ... };
Я хотел бы использовать только статическое распределение, которое яне могу сделать с IQueue.Поскольку это система, основанная на компонентах, я не хочу создавать экземпляр FreeRTOSQueue непосредственно в системном классе.
Идеальным вариантом использования будет что-то вроде следующего кода, который похож на использование FreeRTOS.
class MyApplication {
public:
...
IQueue queue;
void init()
{
this->queue = this->kernel->createQueue(...);
}
};
Я мог бы создавать очереди как глобальные и вставлять в классы вместе с экземпляром ядра и другими компонентами, но это не очень хорошо, потому что очередь не является системным элементом, это элемент только этого модуля.
Я хотел бы услышать предложения по архитектуре о том, как сделать его более простым и понятным.Пожалуйста, имейте в виду, что это встроенная система.
obs .: если вы считаете, что это невозможно, так как в какой-то момент мне нужно выделить память для определенного класса очереди, не стесняйтесь указывать на это.
Спасибо,
Рафаэль