У меня зато есть реальный пример.
andylars 11.09.2016 07:54
/ 11.09.2016 08:02
В практике:
Потребность в прототипном поведении внезапно и остро появлятся в плоскости шаблонизации/интерфейсного движка - если вы пойдете путём компонент! (неудивительно что и js живущий как раз в области UI, именно поэтому имеет такую ООП-парадигму).
Для реализации пришлось писать свой костыль-оператор prototype, который клонирует от прототипа одноименный класс, добавляя постфикс, и скрывая за обёрткой реализацию.
(кстати не делает ли то же самое PF:Templet? это ж ведь тоже workaround из-за отстуствия нативного прототипного поведения).
В общем, в процессе создания именно компонентного serverside responsive-движка (набирающий с 2006 года подход, известный как RESS) появляются потребности в такой модели. Плюс одноименные компоненты разложены на коллекции (это могут быть и темы и mobile/desktop и legacy/html5ready) и в процессе инициализации объекта Render'a класс подгружает последвательно каскад коллекций и объект собирается из разных версий одноименных классов.
И понятно, что в не_прототипном варианте - подгруженная версия одноименного класса "портит" все методы у всех других объектов, и приходится воротить обёртки с порождением нового класса.
Другое дело - что это вообще-то не сложно, и с другой стороны не добавляет кажется доп.накладных расходов. По крайней мере в пространстве классов - так даже легче отследить в reflection все версии, чем понимать сколько версий этого класса живет теперь.
Технический аспект:
По большому счету, и технически де-факто - объектом на основе прототипа - уже является синглтон - статический класс-объект. Нужно породить новый объект на основе прототипа? ^process-им новый статический класс от базового плюс любые свои методы. Имя нового класса - будет уникально, т.к. он уникальный объект-синглтон.
Просто не надо бояться странного (синглтон он и есть прототипный объект):
$uniq_classobject:some_field[]
^uniq_classobject:some_method[]
Другое дело, что породить это красиво без ^process-а пока нельзя
- объект - экземпляр класса vs объект имеет прототипом класс, moko [M] 09.09.2016 18:12
- +1 (-), 19.09.2016 08:56
- Вкупе с отключаемостью $OBJECT-PROTOTYPE(false) в @conf => Однозначно +1, andylars 11.09.2016 07:27 / 11.09.2016 08:11
- Наверняка несовместимость вылезет в самых неожиданных местах, G_Z [M] 09.09.2016 22:42
- Ответ, MoKo 10.09.2016 00:50
- У меня зато есть реальный пример., andylars 11.09.2016 07:54 / 11.09.2016 08:02
- Ответ, G_Z [M] 10.09.2016 01:10
- Ответ, MoKo 10.09.2016 01:47
- +1 (-), n3o 09.09.2016 20:33
- Обеими руками за (-), Sumo [M] 09.09.2016 19:33
- Like (-), vlalek 09.09.2016 18:37