Шаблон проектирования "Одиночка" (Singleton)
Добавлено: 16 авг 2024, 12:42
Шаблон проектирования "Одиночка" (Singleton) гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Этот шаблон часто используется, когда необходимо контролировать доступ к ресурсам, например, к файлам или базам данных.
singleton.cpp
Компиляция и запуск:
singleton.cpp
Код: Выделить всё
#include <iostream>
#include <mutex>
class Singleton {
public:
// Метод для получения единственного экземпляра класса
static Singleton& getInstance() {
static Singleton instance; // Инициализация статического экземпляра
return instance;
}
// Удаляем операции копирования и присваивания
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
void someFunction() {
std::cout << "Вызов метода someFunction() у Singleton." << std::endl;
}
private:
// Приватный конструктор предотвращает создание экземпляров
Singleton() {
std::cout << "Создан экземпляр Singleton." << std::endl;
}
~Singleton() {
std::cout << "Уничтожен экземпляр Singleton." << std::endl;
}
};
int main() {
// Получаем единственный экземпляр класса Singleton
Singleton& instance1 = Singleton::getInstance();
instance1.someFunction();
// Попытка получить еще один экземпляр
Singleton& instance2 = Singleton::getInstance();
instance2.someFunction();
// Проверяем, что это один и тот же экземпляр
if (&instance1 == &instance2) {
std::cout << "Оба экземпляра совпадают." << std::endl;
} else {
std::cout << "Экземпляры разные." << std::endl;
}
return 0;
}
Код: Выделить всё
g++ -std=c++11 -o singleton singleton.cpp && ./singleton