Singleton — это порождающий паттерн проектирования, гарантирующий, что в каждый момент времени будет существовать только один экземпляр класса, который будет доступен глобально. Применяется для централизованного управления ресурсами или конфигурациями.
Пример реализации на Swift:
swift
Преимущества:
- Гарантирует наличие только одного экземпляра.
- Единая точка доступа к экземпляру.
Недостатки:
- Может усложнять тестирование (сложно заменить моком).
- Нарушает принцип единственной ответственности (класс отвечает и за свою логику, и за управление экземпляром).
- Потенциально может создавать проблемы с многопоточностью, если не синхронизирован.