В последнее время часто вижу движуху на тему «синглтоны зло». Однако при попытке разобраться в вопросе натыкаешься на каких-то диванных теоретиков которые по существу сказать не могут. Из того что я понял есть три проблемы:
1) типа синглотон нельзя унаследовать. Я принимаю это. Но dependency injection (или как это) или враппер никто не отменял.
2) mocking невозможен. Имхо, не невозможен а затруднён. Опять-таки со своим кодом это не проблема. Проблема если синглтон откуда-то экспортируется. В общем, да, есть трудности, а кому щас легко? Давайте теперь всё сносить что трудно отладить. Впрочем, у меня синглтоны простые и в 99% служат защитой того что нигде в коде, скажем, не появится второй обработчик сетевых соединений итп. Т.е. наоборот спасает от глюков.
3) ну и всякая лабуда в духе «а вот жабе можно вот так извернуть что ...». Короче, жавапроблемы.
4) «Я удалил все синглтоны и мои волосы стали длинными и шелковистыми». И такое я вижу в качестве «аргумента».
Моя точка зрения синглтоны это часть нашей жизни. В питоне, например, модуль это синглтон. Да что там, даже обычная shared-либу можно обозвать синглтоном. Да и вообще у нас есть только одни stdin, stderr и stdout. Никто же не орёт что это несправедливо? Лепить их где попало не стоит, но так это и ежу понятно.
Что скажешь, лор?
Не люблю кастовать, но не могу удержаться.
Cast tailgunner, baverman, , mv, anonymous,