Для каких целей в приложении используют шаблон проектирования Singleton?
Изучаю ООП в PHP, знакомлюсь с шаблонами проектирования. Подскажите случаи когда стоит использовать шаблон проектирования Singleton? Мне на ум приходит только хранение подключения к БД (если подразумевается работа ТОЛЬКО с одной БД) и/или каких-нибудь исходных параметров приложения (язык, кодировка, token-ы доступов и т.п.). А для чего ещё применяют Singleton?
Подскажите случаи когда стоит использовать шаблон проектирования Singleton?
Я не вспомню сразу, к сожалению, кто, но кто-то из гуру в C++ писал как-то примерно следующее: когда просится необходимость в использовании класса singleton - это сразу говорит о дефектности архитектурной проработки проекта.
Как называется шаблон, который только создаёт объекты? Фабрика. Как называется шаблон, который хранит объекты? Реестр. Как называется шаблон, который создаёт объекты и хранит их? Контейнер.
Следовательно, синглетон --- вырожденный случай контейнера (точнее говоря сервис-локатора).
Александр Андреев: Можно ещё "ядро" движка оформить как синглтон во избежании создания множества копий одного. Фактически, тот же алокатор. Стоит или не стоит — зависит от предназначения и задачи.
Александр Андреев сигнлетон можно применять в том случае, если у вас нет возможности использовать Dependency Injection Container (знаю одну контору, где принципиально не используют оный), и вам нужен инстанс какого-либо сервиса (объекта) в гарантированно единственном экземпляре. Да, коннект в БД годится для этого. Так же это может быть объект "пользователь", коннект в memcache, сервис авторизации/аутентификации, репозитории, и многое иное. Принцип в данном случае один: нужно гарантировать, что объект в рамках жизненного цикла приложения будет создан в единственном экземпляре.