Когда синглтон уместен?

Когда синглтон уместен?
Когда синглтон уместен? - julianhochgesang @ Unsplash

Из того, что я наблюдал, два основных критических замечания по поводу синглтонов делятся на два лагеря:

  1. Синглтоны используются не по назначению и злоупотребляют менее способными программистами, поэтому все становится синглтоном, и вы видите код, усеянный ссылками на Class::get_instance(). Вообще говоря, есть только один или два ресурса (например, подключение к базе данных), которые подходят для использования шаблона Singleton.
  2. Синглтоны — это, по сути, статические классы, основанные на одном или нескольких статических методах и свойствах. Все статические вещи представляют собой реальные, ощутимые проблемы, когда вы пытаетесь выполнить модульное тестирование, потому что они представляют собой тупики в вашем коде, которые нельзя сымитировать или заглушить. В результате, когда вы тестируете класс, основанный на Singleton (или любом другом статическом методе или классе), вы тестируете не только этот класс, но и статический метод или класс.

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

Рекомендую посмотреть эти видео для лучшего погружения в вопрос:

Прикрепленное видео 1 - Собеседование Middle C++

Прикрепленное видео 2 - Salesforce Apex Design Patterns: Singleton, Strategy, Decorator, Facade, Composite, BulkS Transition


LetsCodeIt, 18 мая 2023 г., 03:48