Здравствуйте, prVovik, Вы писали:
M>>Например пул потоков. Очевидно что для эфективности такой объект должен жить в одном экземпляре.
V>Жить в одном экземпляре и синглтон — это не одно и тоже.
Конечно это разные вещи. А вот жить гарантированно в одном экземпляре — это одно и то-же.
V>Обычно под синглтоном понимают конкретную его реализацию (я имею ввиду со статическим методом).
То есть ты себе что-то понимаешь, и с этим чем-то споришь.
V>Чем это лучше варианта, когда доступ к объекту получаем не через статический метод класса, а через обычный метод обычного объекта?
Тем, что есть вещи семантически уникальные. Как только их становится несколько — это нарушение контракта и дизайна.
Чаще всего таких объектов вообще не надо иметь (в смысле — не обязательно их иметь). Раз он один, уникальный, то и не нужен он.
Единственный существующий пул тредов можно заменить набором статических методов и переменных.
List.Nil можно заменить чем-то вроде нулевого указателя и т.д.
А шаблон singleton применяют в случаях, когда дизайн (приложения, библиотеки, метода) требует объекта, инстанса — просто
нужно передать ссылку на объект. Т.е. ограничение языка программирования, его средств. Шаблонные решения потом, зачастую,
входят в сам язык программирования. Скажем, singleton вошёл в Scala как object (в отличие от их class-а).
Вошёл именно потому, что это действительно самантическая и удобная абстракция, а не какой-то buzz-word.