static or singleton быть или не быть? И как быть?
От: 0x00  
Дата: 13.09.16 14:23
Оценка:
Доброго времени суток.
Возник вопрос по архитектуре, двоякая ситуация где можно использовать как 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 для "надежности", было интуитивно понятно что экземпляр рендера должен быть один, но над подходом к реализации не задумывался, теперь вот задумался и поспешил сюда за советом, т.к. мог не учесть каике-то подводные камни)

Как вы поступаете в подобных ситуациях? И почему?
c++ architecture
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.