Шаблон проектирования Singleton это такой шаблон, который используется для создания одного экземпляра класса и предоставления одной глобальной точки доступа к этому объекту. Тем временем Singleton (Одиночка) – это экземпляр класса, который уникален во всем проекте и к нему предоставляется доступ отовсюду. Он является глобальным.
Поясню на примере. У каждой страны есть своё правительство и при этом оно одно, а создание нового правительство чревато плохими последствиями и вообще это запрещено.
Реализуем эту аналогию в Python следующим образом:
В примере мы определяем переменную __instance__, которая будет содержать единственный объект для создания экземпляра. Конструктор проверяет наличие существующего класса или выдает ошибку. Так мы можем избежать создания нового инстанса класса.
При извлечении объекта с помощью метода get_instance() мы проверяем, доступен ли существующий экземпляр, и возвращаем его. Если нет, то создаем его и опять возвращаем.
Первые три объекта находятся в одной ячейке памяти, а когда мы попытались создать новый инстанс класса, сработало исключение.
Итак, сегодня мы познакомились и реализовали Singleton шаблон проектирования. Как и любой другой шаблон дизайна, он имеет свои плюсы и минусы. Поэтому перед его использованием мы должны проанализировать и принять решение, будет ли полезен данный прием в нашем проекте или нет.
Спасибо за внимание. Если вам понравилась статья, то ставьте лайки, делитесь с друзьями. Остались вопросы или замечания? Буду рад видеть ваши комментарии.