Я так понял, что нет, объявлять её надо во всех классах, желающих стать синглтонами. LSB тут ни при чём.Автор оригинала: FractalizeR
zerkms
Вы имеете ввиду в Singleton эту функцию объявить? А если PHP младше, чем 5.3? LSB-то еще не было.
Зерыч, а в какого рода приложениях нам надо штамповать синглтоны десятками инстансов? Я что-то как-то не представляю себе. Код, не стремящийся уйти от "жёсткой сцепки", а наоборот, на неё всячески направленный? Могу представить себе данный подход как эффективный только в одном случае: работодатель не вникает в код и работодатель платит за время.Автор оригинала: zerkms ну и для пущей красоты реализовать интерфейс ISingleton. м?
Давай разберёмся. Предложенный Зерком вариант содержал ключевое слово "интерфейс". Ты знаешь, чем интерфейс отличается от класса?Автор оригинала: Beavis
stanis
LSB тут при том, что он позволяет не объявлять одну и ту же функцию в каждом синглтоне, а объявить её только в базовом классе
на что ругается Strict Standards: Static function Singleton::getInstance() should not be abstract in ... %)Но влияет на качество кода. Если подразумевается, что функция должна обязательно определяться всеми потомками по-своему, есть все основания объявить ее абстрактной. Вы ведь заботитесь о тех, кто будет ваш код читать?

Вы делаете класс, наследуете его от синглтона, потом хотите сделать потомка этого класса (не нужно объяснять почемы вы можете этого захотеть?) у вас он получится синглтоном, хотя не факт что для этого потомка шаблон синглтон является подходящим вариантом.Автор оригинала: FractalizeR
Это-то понятно. Мне непонятна суть фразы "Не факт что потомки вашего класса (наследники синглтона) тоже должны быть синглтонами." Если они "не должны быть синглтонами", то зачем я могу захотеть их от него унаследовать?
Золотые слова!Автор оригинала: fixxxer
Синглтон со static:: и наследованием - это фабрика, сделанная через задницу.
я этого не говорил. я сказал: что подобного характера отношений между классами недостаточно (субъективно), чтобы помещать их в одну иерархию наследования.Всегда надо выносить фабричный метод в отдельный класс?
согласен. а ещё я согласен, что программирование с гаданием не имеет ничего общего, поэтомуzerkms, ты же согласен, что применение шаблонов бывает и избыточным?
- не аргументесть подозрение что когда-нибудь будет

Поэтому и написал так. Что рефакторинг производится постепенно, и шаблоны не всегда выделяются сразу.не аргумент![]()
у тебя изначально неверный посыл. в твоём примере иерархия уже существует и классы объединены чем-то общим. в обсуждаемой же теме единственная связь между классами в предке - способность порождать объекты.Ситуация - класс product и наследники - concrete_product1, concrete_product2, concrete_product3.
А, тогда согласен с твоими суждениямив обсуждаемой же теме единственная связь между классами в предке - способность порождать объекты.
День тяжелый был, с вечера плохо с внимательностью.