Back to questions
4 лапы
Junior — Middle
78
Какими методами можно реализовать паттерн Singleton в программировании?
Companies where asked
Answer from AI
sobes.tech AI
Паттерн Singleton гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему. В iOS (Swift/Objective-C) есть несколько способов реализации Singleton:
- Использование статической константы (Swift)
class MySingleton {
static let shared = MySingleton()
private init() { }
}
Этот способ ленивый и потокобезопасный, так как static let инициализируется один раз.
- Использование dispatch_once (Objective-C)
+ (instancetype)sharedInstance {
static MySingleton *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
- Ленивая инициализация с проверкой (не рекомендуется из-за проблем с потокобезопасностью)
class MySingleton {
static var shared: MySingleton = {
return MySingleton()
}()
private init() { }
}
- Использование enum (Swift)
enum MySingleton {
static let shared = MySingleton()
}
Но чаще всего используется первый способ с static let.
Важно: конструктор должен быть приватным, чтобы предотвратить создание других экземпляров.