PHP: Паттерн Одиночка (Singleton)

Паттерн Singleton предназначен для обеспечения того, чтобы класс имел только один экземпляр и предоставлял к нему глобальную точку доступа. Это особенно полезно, когда нужен точно один экземпляр класса, чтобы координировать действия по всему приложению. Например, это может быть соединение с базой данных или менеджер конфигурации.

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

Простой пример реализации паттерна Singleton на PHP:

class DatabaseConnector
{
	private static $instance = null;

	private function __construct()
	{
		# Здесь может быть код инициализации соединения с базой данных
	}

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

	private function __clone()
	{
		# Защита от клонирования
	}

	private function __wakeup()
	{
		# Защита от десериализации
	}
}

Использовать Singleton можно так:

$db = DatabaseConnector::getInstance();

Этот код гарантирует, что независимо от того, сколько раз вы попытаетесь получить экземпляр класса DatabaseConnector, будет использоваться только один и тот же экземпляр.

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

PHP Паттерн Просмотров: 243
Оценить код:

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.