Sobes.tech
Back to questions
Junior — Middle
78

Как создать класс, который гарантированно имеет только один экземпляр без применения паттерна Singleton?

Answer from AI

sobes.tech AI

Чтобы создать класс с гарантированно одним экземпляром без использования паттерна Singleton, можно использовать подход с созданием экземпляра заранее и предоставлением доступа к нему через статическое свойство или метод. Например, в Swift (iOS) можно сделать так:

class MyClass {
    static let sharedInstance = MyClass()
    private init() { }
}

Здесь sharedInstance — единственный экземпляр класса, а конструктор init() сделан приватным, чтобы нельзя было создать другие экземпляры извне.

Если же нельзя использовать паттерн Singleton, но нужно ограничить создание экземпляров, можно:

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

Пример фабричного метода:

class MyClass {
    private static var instance: MyClass?
    private init() { }

    static func getInstance() -> MyClass {
        if instance == nil {
            instance = MyClass()
        }
        return instance!
    }
}

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