Back to questions
Junior — Middle
48
Можете ли вы объяснить принцип работы паттерна Singleton и его особенности?
Companies where asked
adspector
Answer from AI
sobes.tech AI
Паттерн Singleton гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Это полезно, когда нужно централизованно управлять ресурсами или состоянием.
Особенности:
- Конструктор обычно делают приватным или защищённым, чтобы предотвратить создание новых экземпляров извне.
- Экземпляр создаётся лениво (при первом обращении) или сразу при загрузке.
- В многопоточной среде нужно обеспечить потокобезопасность создания экземпляра.
Пример на Python с использованием декоратора:
def singleton(cls):
instances = {}
def get_instance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return get_instance
@singleton
class Logger:
def log(self, msg):
print(msg)
logger1 = Logger()
logger2 = Logger()
print(logger1 is logger2) # True
Здесь класс Logger будет иметь только один экземпляр.