mirror of
https://github.com/JakubVojvoda/design-patterns-cpp.git
synced 2025-12-17 04:44:36 +03:00
61 lines
887 B
C++
61 lines
887 B
C++
/*
|
|
* C++ Design Patterns: Singleton
|
|
* Author: Jakub Vojvoda [github.com/JakubVojvoda]
|
|
* 2016
|
|
*
|
|
* Source code is licensed under MIT License
|
|
* (for more details see LICENSE)
|
|
*
|
|
*/
|
|
|
|
#include <iostream>
|
|
|
|
/*
|
|
* Singleton
|
|
* has private static variable to hold one instance of the class
|
|
* and method which gives us a way to instantiate the class
|
|
*/
|
|
class Singleton
|
|
{
|
|
public:
|
|
static Singleton* get()
|
|
{
|
|
if ( !instance )
|
|
{
|
|
instance = new Singleton();
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
static void restart()
|
|
{
|
|
if ( instance )
|
|
{
|
|
delete instance;
|
|
}
|
|
}
|
|
|
|
void tell()
|
|
{
|
|
std::cout << "This is Singleton." << std::endl;
|
|
// ...
|
|
}
|
|
// ...
|
|
|
|
private:
|
|
Singleton() {}
|
|
static Singleton *instance;
|
|
// ...
|
|
};
|
|
|
|
Singleton* Singleton::instance = nullptr;
|
|
|
|
|
|
int main()
|
|
{
|
|
Singleton::get()->tell();
|
|
Singleton::restart();
|
|
|
|
return 0;
|
|
}
|