Доброго времени суток.
Возник вопрос по архитектуре, двоякая ситуация где можно использовать как singleton так и static.
Есть грубо говоря очередь рендера, наследовать\копировать как либо я не собираюсь и ограничиваюсь одним экземпляром.
Static
class IRender;
class RenderQuery
{
static std::vector<std::vector<IRender *>> render_objects;
public:
static void addObject(unsigned layer, IRender *object);
static void delObject(IRender *object);
};
Singleton
class RenderQuery
{
static RenderQuery *self;
std::vector<std::vector<IRender *>> render_objects;
RenderQuery();
RenderQuery(const RenderQuery &);
RenderQuery & operator =(const RenderQuery &);
~RenderQuery();
public:
static RenderQuery * get()
{
if (!self) self = new RenderQuery();
return self;
}
static void del()
{
if (self)
{
delete self;
self = nullptr;
}
}
void addObject(unsigned layer, IRender *object);
void delObject(IRender *object);
};
RenderQuery *RenderQuery::self = nullptr;
И не могу себе объяснить, что будет верно использовать в данном случае, singleton или static класс, думаю что статический класс лучше подходит т.к. я избегаю излишнего функционала, в данном случае из за минимума методов, я могу не использовать singleton.
Ранее использовал singleton для "надежности", было интуитивно понятно что экземпляр рендера должен быть один, но над подходом к реализации не задумывался, теперь вот задумался и поспешил сюда за советом, т.к. мог не учесть каике-то подводные камни)
Как вы поступаете в подобных ситуациях? И почему?