@dev400

Какой смысл от синглтона, когда есть статика?

Ведь в любом случае мы получаем глобальное состояние. Какой смысл использовать именно singleton?
  • Вопрос задан
  • 352 просмотра
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ведь в любом случае мы получаем глобальное состояние


А глобальное состояние что? Правильно, плохо. У меня тут недалеко есть один небольшой проектик под iOS где ребята решили повесилиться, и сделали сингелтон с сотней публичных свойств. И вся система работает с этим глобальным состоянием плодя побочные эффекты. Инкапсуляция? не, не слышали.

Какой смысл использовать именно singleton?


Сингелтон - это паттерн, который запрещает нам иметь в рамках процесса два инстанса одного объекта. Самый простой способ - использование статики. Сингелтоны полезно, когда у вас, например, два потока, и каждый наровит создать объект, а вам жизненно необходимо что бы объект в системе был один, что бы ошибок небыло.

В PHP, где не не особо популярна идея многопоточного программирования, и процветает "умирающая" модель выполнения, в сингелтонах вообще нет смысла. И используют их потому что... внимание... хотят иметь глобальный доступ к различной фигне, в том числе организация глобального состояния.
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
Господин Эскобар плохого не скажет)) (осторожно, мат)

Статика - это в принципе опасная штука, ведет к безконтрольной связности проекта. В итоге он превращается в неповоротливый монолит. Опасно даже для небольших проектов.

Синглтон - для крупных проектов может стать узким горлышком, в случае когда инициализация сервиса зависит от контекста выполнения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы