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.