Сейчас очень трендово говорить, что синглтоны — устаревшая концепция, что это настолько плохо, что хуже может быть только goto. При этом в подавляющем большинстве случаев на вопрос «и чо делать?» эти люди делают загадочное лицо.
Но, блин, где-то же должна программа в общем случае держать свое состояние. Без этого в программах большой и средней сложности обойтись нельзя.
И вот мне тут для картины мира одного штриха не хватает. Поправьте, если что.
Прав ли я, что основная претензия к синглтону не в том, что он есть, и не в том, что он такой обычно один на все приложение, а в том, что каждый другой объект, которому этот синглтон нужен, магически знает, как этот синглтон называется в глобальном пространстве имен? И чтобы не попадать в категорию «фу быть таким», достаточно передавать этот синглтон параметром всем, кому он полагается для работы (а как он создается на самом-самом верхнем уровне, даже если это типичное foo = MySingleton.getInstance(), никому не интересно)?
P.S. Я точно знаю, что есть хуже синглтона: глобальное состояние, размазанное по пердиллиону модулей. По-моему, это даже хуже goto.
Перемещено mono из talks