Я работаю над простой картой, написанной на C++. Теперь у меня есть что-то вродеЛучший способ организовать singleton с виртуальными методами
app.cpp
#include "app.h"
namespace App
{
}
void App::init()
{
}
void App::timerEvent(int time)
{
}
Но что, если я не хочу слушать TimerEvent в некоторых случаях? Мне все еще приходится писать пустую реализацию метода.
Моя идея заключается в том, чтобы перейти от пространства имен class App : public BaseApp
с virtual void BaseApp::init() = 0
и virtual void BaseApp::timerEvent(int time) {}
в BaseApp
(Similary в Qt QApplication
). Однако приложение должно быть одноточечным, но я не вижу способа указать его с BaseApp
, поэтому мне нужно написать одноэлементный код в App
, и вся виртуальная идея не имеет смысла.
Как его проектировать?
P.S. Я не хочу использовать слушателей здесь. Мне кажется, что это слишком много.
P.P.S. Мне нужен singleton, потому что я инициализирую экземпляр приложения от main
, но все же хочу получить доступ к его методам из других классов.
Я не все понимаю, но в любом случае, просто не использовать Singleton и спроектировать архитектуру на основе этого принципа. –
Вы можете * выбрать *, чтобы создать только ** один объект '' App'. Вам не нужен синглтон, чтобы сделать этот выбор. – Galik
@Galik, но я не вижу никакой другой возможности. Я хочу вызвать методы экземпляра приложения из других частей кода. – Ximik