Sobes.tech
Back to questions
Junior — Middle
106

Можете объяснить, каким образом реализуется паттерн Singleton и как он обеспечивает единственный экземпляр класса?

Companies where asked
Innowise Group
ИНДИНС

Answer from AI

sobes.tech AI

Паттерн Singleton гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.

Как реализуется Singleton в PHP:

  • Создается приватное статическое свойство для хранения экземпляра класса.
  • Конструктор делается приватным или защищённым, чтобы предотвратить создание объектов извне.
  • Создается публичный статический метод (обычно getInstance()), который проверяет, создан ли уже экземпляр, и если нет — создает его, затем возвращает.

Пример:

class Singleton {
    private static $instance = null;

    private function __construct() {
        // приватный конструктор
    }

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

    // запрет клонирования
    private function __clone() {}

    // запрет десериализации
    private function __wakeup() {}
}

// Использование
$singleton = Singleton::getInstance();

Таким образом, класс контролирует создание своего единственного экземпляра и не позволяет создавать новые объекты напрямую.