Подробнее на 👉 refactoring.guru
Будет создан объект-одиночка путем построения его из статического метода getInstance(). Других способов построения нет, т.к. конструктор должен объявляться приватным, и он извне не доступен.
#include <iostream>
class Singleton {
private:
static Singleton* instance;
Singleton() {}
public:
static Singleton* getInstance() {
if (instance == nullptr)
instance = new Singleton();
return instance;
}
void showMessage() { std::cout << "Hello, I am a Singleton!" << std::endl; }
};
Singleton* Singleton::instance = nullptr;
int main() {
Singleton* singleton = Singleton::getInstance();
singleton->showMessage();
return 0;
}
Будет напечатано:
Hello, I am a Singleton!
class Singleton {
static Singleton? _instance;
Singleton._();
static Singleton getInstance() {
if (_instance == null) {
_instance = Singleton._();
}
return _instance!;
}
void showMessage() {
print('Hello, I am a Singleton!');
}
}
void main() {
Singleton singleton = Singleton.getInstance();
singleton.showMessage();
}
Будет напечатано:
Hello, I am a Singleton!