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