В JAVA класс Singleton гарантирует, что класс имеет только один экземпляр.
Также в C ++, если вы хотите создать только один экземпляр класса, тогда используются шаблоны Singleton.
Используется шаблон Singleton Design, где требуется только один экземпляр объекта на протяжении всего жизненного цикла приложения.
Класс Singleton создается во время первого доступа, а затем используется один и тот же экземпляр, пока приложение не закроется.
Шаблон Singleton Design часто используется для управления доступом к таким ресурсам, как соединения с базой данных или сокеты. Предположим, у нас есть лицензия только на одно соединение для нашей базы данных. Объект подключения Singleton гарантирует, что в любое время может быть установлено только одно подключение.
#include <iostream>
using namespace std;
class Singleton
{
private:
static bool instanceFlag;
static Singleton *single;
Singleton()
{
//private constructor
}
public:
static Singleton* getInstance();
void method();
~Singleton()
{
instanceFlag = false;
}
};
bool Singleton::instanceFlag = false;
Singleton* Singleton::single = NULL;
Singleton* Singleton::getInstance()
{
if(! instanceFlag) // use the instanceFlag in all methods and functions to check if object already exists
{
single = new Singleton();
instanceFlag = true;
cout<<"NO OBJECT WAS PREVIOUSLY CREATED"<< endl;
cout<<"__________________________________________________"<< endl;
return single;
}
else
{
cout<<"OBJECT ALREADY EXISTS!!"<< endl;
cout<<"__________________________________________________"<< endl;
return single;
}
}
void Singleton::method()
{
cout << "Method of the singleton class" << endl;
}
int main()
{
Singleton *sc1,*sc2;
cout<<"Object 1"<< endl;
sc1 = Singleton::getInstance();
cout<<"Object 2"<< endl;
sc2 = Singleton::getInstance();
return 0;
}