Страницы

Поиск по вопросам

суббота, 20 октября 2018 г.

Никак не могу понять смысл использования singleton паттерна

Много наслышан об паттерне программирования "singleton". Вот только никогда на практике не приходилось встречать его в действии (а может и приходилось, но я об этом не догадываюсь). Расскажите, что это такое (по русски, гуглом пользоваться умею, но кроме сухой терминологии и пары non-real-life примеров ничего не находил), как, а главное в каких случаях им можно/нужно пользоваться, ну и желательно пример (на Ruby, если можно).


Ответ

Синглетон - это паттерн, описывающий объект в единственном экземпляре, без возможности создания его копии. Например, у вас имеются настройки для приложения и они должны быть в единственном экземпляре, не допускается создать копию такого объекта, изменить её в одной части приложения, а в другой станется не измененная старая копия. Или установив соединение с базой данных один раз, нужно воспользоваться уже установленным соединением и не создавать его повторно. Вместо базы данных, может быть лог-файл или любой другое хранилище существующее в единственном экземпляре.
Для того, чтобы создать синглетон в Ruby вы должны закрыть возможность создания объекта через new и клонирование объекта (методы clone, dup, _dup). В стандартной библиотеки Ruby уже реализован модуль, подмешав который в собственный класс, вы можете превратить его в синглетон, включив его в класс.
class MyClass include Singleton # ... end
o = MyClass.instance

Комментариев нет:

Отправить комментарий