Здравствуйте, adontz, Вы писали:
A>Не извращай, я кажется, достаточно ясно сказал что между кодом в книге и кодов в приложении есть разница.
Разница на столько сильная, что они опубликовали откровенно кривую реализацию, причем на нескольких языках? Что, по твоему, могло им помешать опубликовать "правильную" и ввергло в пучину заблуждения разработчиков на десятилетия?
A>Фабрика генерирует разные реализации интерфейса,
Она
может генерировать разные реализации некоего интерфейса, а может одну вполне конкретную — это просто частный случай. Ты же сам призывал не заниматься буквоедством и не глядеть тупо в книгу, а думать.. Ну вот подумай..
A> В Си++ чтобы синглтон нельзя было создать в обход фабричного метода ничего никуда заносить не надо.
Ты опять не внимательно читаешь, ключевое слово было "не связанный". Связь между классами друзьями в c++ настолько сильная, что вынос фабричного кода в отдельного "друга", по факту, мало чем отличается от реализации в том же классе, соблюсти SRP это не поможет.
A> Нечего записывать в недостатки паттерна убогость/недоразвитость языка программиования, на котором он реализовывается.
Ну все, дальше без меня добъют..
A>Никак не будем. У тебя есть другие решения (не синглтон) которые запросто делаются statefull?
Следи за руками. беда в том, что синглтон глобален и имеет состояние. Убери любой из этих пунктов и все будет хорошо, нет ничего страшного в обычном классе с состоянием, без единой глобальной точки доступа и от глобального метода без состояния большой беды нет. Вот тебе и ответ, это все уже обсуждали...
A> Мне лично интересно как умный и понимающий человек может неожиданно для себя запутаться.
Больше всего косяков допускают как раз "умные и понимающие", которые точно знают как правильно использовать синглтон и не боятся его применять.
Правда, периодически забывают что такое состояние.. )
A>Забавно. Вот, например, SQL сервер работает с файлами, но в публичном контракте ADO этого не видно.
Зато это видно в публичном контракте БД, поскольку это она работает с файлами, а не ADO. А в публичном контракте ADO видно, с какой БД, сервером и базой идет работа.
A> А может твоя аксиома неправильная и детали реализации не должны торчать наружу?
Детали реализации тут не причем, просто смирись..