Реквием по Одиночке
Одиночка
Вы же знаете, что живёт такой паттерн — Singleton, он же Одиночка?
«Да, конечно!», — воскликнут одни.
«Хренасдва!», — возразят им другие. И тут же добавят, «Это не паттерн, а самый что ни на есть антипаттерн!».
И кто тут прав? Может быть обе стороны, а может быть обе не правы. Да и хрен с ними, если честно, чума на оба их дома.
Когда-то четыре смелых чувака решили собрать «любимые» паттерны в одну книгу и описали их. И люди приняли их, и сказали, что это прекрасно. Добрую четверть века на каждом техсобесе, каждого уважающего себя разраба спрашивали (и продолжают спрашивать) про паттерны. Такая, своего рода система «свой/чужой».
Одним из этих паттернов «был» и Одиночка. Хороший паттерн, всем своим существом направленный на созидание, а не на разрушение. Эгоистичен он слегка, конечно, но кто не без греха? Пусть он не строит большие и сложные объекты, как Строитель, пусть не рождает гибких и короткоживущих химер, как Фабрики. Но он уникален, он такой один!
Но время и разрабы безжалостны. По истечению нескольких лет всё чаще раздаются выкрики, что паттерн не настоящий и даже вредный.
Ненастоящий?
За что?! Что он вам сделал?! Это же добрейшее виртуальное существо, он создаёт что-то новое, которое живёт столько же, сколько живёт программа. И вместе с ней умирает. В тот час, когда приложуха крутится на сервере без пользователей, где-то в оперативной памяти собираются такие вот Одиночки и философствуют на разные темы и делятся друг с другом своими сокровенными мечтами.
Сперва без Одиночки жить было просто нельзя. Но потом появились контейнеры IoC, в которых появилась своя расово-правильная замена Одиночки — это объекты с временем жизни Singleton. И классический Одиночка перестал быть нужен совсем.
И это печально, товарищи. Я призываю вас, давайте не дадим вымереть краснокнижному программному существу. Взываю к вашему разуму и доброму сердцу. Вы же все за всё хорошее и против всего плохого. Мы в ответе за тех, кого накодили.
Давайте каждый из нас добавит в свой проект хотя бы одного простого Одиночку. И пусть он даже ничего не делает, пусть просто живёт где-то в углу кучи. Пусть он буден на столько простой и маленький, что не будет есть много памяти и процессора. Он же не навредит, он добрый.
А кто накодит лейзи-одиночку, но так и не проинициализирует его, того пусть пусть не пощадит Великий Рандом. Ибо сердца у вас нет.
P.S. Вспомнился мне на днях старый текст на тему «Экономьте гуиды, они не бесконечны». Говорят, что интернет ничего не забывает, но я что-то не нашёл тот текст, да и не старался искать. Он был прекрасен. Столько лет прошло, но до сих пор вспоминается частично.