Хорошо, ребята, я изо всех сил пытаюсь понять, зачем нужен синглтон.
Давайте рассмотрим реальный пример: у меня есть структура для моя CMS
Мне нужен класс, который регистрирует некоторую информацию (давайте придерживаться PHP).
Пример:
class Logger{
private $logs = array();
public function add($log) {
$this->logs[]=$log;
}
}
Теперь, конечно, этот вспомогательный объект должен быть уникальным для времени записи запроса страницы моего CMS.
И чтобы решить эту проблему, мы должны сделать его синглтоном (объявив конструктор закрытым и т.д.)
Но почему, черт возьми, такой класс не является полностью статичным? Это решит потребность в шаблоне singleton (который считается плохой практикой). Пример:
class Logger {
private static $logs = array();
public static function add($log) {
self::$logs[]=$log;
}
}
Сделав этот помощник полностью статическим, когда нам нужно добавить журнал где-нибудь в нашем приложении, нам просто нужно вызвать его статически, например: Logger :: add ('log 1');
против одноэлементного вызова, например: Logger :: getInstance () -> add ('log 1');
Надеюсь, кто-то упростит понимание для мне, почему использует синглтон вместо статического класса в PHP.
Это довольно хорошая лекция о синглтоне и статическом классе для тех, кому интересно, спасибо @James. (Обратите внимание, что это не t ответьте на мой вопрос)