Re[5]: Singleton действительно антипаттерн в enterprize прил
От: IB Австрия http://rsdn.ru
Дата: 10.08.07 22:52
Оценка: +1
Здравствуйте, adontz, Вы писали:

A>Не извращай, я кажется, достаточно ясно сказал что между кодом в книге и кодов в приложении есть разница.

Разница на столько сильная, что они опубликовали откровенно кривую реализацию, причем на нескольких языках? Что, по твоему, могло им помешать опубликовать "правильную" и ввергло в пучину заблуждения разработчиков на десятилетия?

A>Фабрика генерирует разные реализации интерфейса,

Она может генерировать разные реализации некоего интерфейса, а может одну вполне конкретную — это просто частный случай. Ты же сам призывал не заниматься буквоедством и не глядеть тупо в книгу, а думать.. Ну вот подумай..

A> В Си++ чтобы синглтон нельзя было создать в обход фабричного метода ничего никуда заносить не надо.

Ты опять не внимательно читаешь, ключевое слово было "не связанный". Связь между классами друзьями в c++ настолько сильная, что вынос фабричного кода в отдельного "друга", по факту, мало чем отличается от реализации в том же классе, соблюсти SRP это не поможет.

A> Нечего записывать в недостатки паттерна убогость/недоразвитость языка программиования, на котором он реализовывается.

Ну все, дальше без меня добъют..

A>Никак не будем. У тебя есть другие решения (не синглтон) которые запросто делаются statefull?

Следи за руками. беда в том, что синглтон глобален и имеет состояние. Убери любой из этих пунктов и все будет хорошо, нет ничего страшного в обычном классе с состоянием, без единой глобальной точки доступа и от глобального метода без состояния большой беды нет. Вот тебе и ответ, это все уже обсуждали...

A> Мне лично интересно как умный и понимающий человек может неожиданно для себя запутаться.

Больше всего косяков допускают как раз "умные и понимающие", которые точно знают как правильно использовать синглтон и не боятся его применять.
Правда, периодически забывают что такое состояние.. )

A>Забавно. Вот, например, SQL сервер работает с файлами, но в публичном контракте ADO этого не видно.

Зато это видно в публичном контракте БД, поскольку это она работает с файлами, а не ADO. А в публичном контракте ADO видно, с какой БД, сервером и базой идет работа.

A> А может твоя аксиома неправильная и детали реализации не должны торчать наружу?

Детали реализации тут не причем, просто смирись..
Мы уже победили, просто это еще не так заметно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.