Swift Design Patterns: Singleton

Зачем нужен?

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

Определение

  • гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру

Реализация

  1. Объявите статичный аттрибут-константу в классе
  2. Используйте приватный метод доступа у инициализатора

Пример

Реализация на языке Swift получается в одну строчку. Связано это с тем, что для глобальных и статичных переменных структур, перечислений и классов используется ленивая инициализация. Ленивая инициализация запускается единожды и является потокобезопасной(атомарной), т.к используется dispatch_once

class SomeClass {
    static let sharedInstance = SomeClass()
    private init() { }
    
    // другие методы
}

Реализация паттерна Singleton: