Что такое паттерн Singleton

«Что такое паттерн Singleton» — вопрос из категории Паттерны, который задают на 28% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Singleton — это порождающий шаблон проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему.

Ключевые особенности:

  • Приватный конструктор (чтобы нельзя было создать экземпляр извне).
  • Статический метод для получения экземпляра (обычно getInstance()).
  • Ленивая инициализация (создание объекта при первом вызове).

Пример на PHP:

class Singleton {
    private static $instance = null;

    private function __construct() {} // Запрещаем создание через new

    public static function getInstance() {
        if (self::$instance === null) {
            self::$instance = new self();
        }
        return self::$instance;
    }
}

$singleton1 = Singleton::getInstance();
$singleton2 = Singleton::getInstance();
var_dump($singleton1 === $singleton2); // true (один и тот же объект)

Использование:

  • Логирование, конфигурация, подключение к БД.
    Осторожно:
  • Может усложнить тестирование (глобальное состояние).
  • В многопоточной среде требует защиты от race condition.