Sobes.tech
Back to questions
Junior — Middle
79

Объясните концепцию паттерна Singleton и его основные особенности.

Companies where asked
AndersenAndersen

Answer from AI

sobes.tech AI

Паттерн Singleton гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Это полезно, когда нужно централизованно управлять состоянием или ресурсами, например, при работе с настройками приложения или менеджером базы данных.

Основные особенности Singleton:

  • Один экземпляр: класс контролирует создание объекта и не позволяет создать более одного.
  • Глобальная доступность: экземпляр доступен из любой части программы через статический метод или свойство.
  • Отложенная инициализация: объект создаётся при первом обращении (lazy initialization).

Пример реализации Singleton в Dart (Flutter):

class Singleton {
  Singleton._privateConstructor();

  static final Singleton _instance = Singleton._privateConstructor();

  factory Singleton() {
    return _instance;
  }

  void someMethod() {
    print('Вызов метода Singleton');
  }
}

void main() {
  var s1 = Singleton();
  var s2 = Singleton();
  print(identical(s1, s2)); // true
}

Здесь конструктор приватный, а доступ к экземпляру идёт через фабричный конструктор, который всегда возвращает один и тот же объект.