Сообщение от Dmitry A. Soshnikov
|
(а) на этапе проектирования (когда подключаются плагины),
|
Но практически это ничем не отличается от статического ООП программироания в Java. Там так же точно , например, один написал систему в которой определены интерфейсы (или абстрактные классы) общения с объектами этой системы , после чего другие пишут развитие этой системы ,
реализуя эти интерфейсы. Т.е. это все стадия проектирования, где осуществляется не динамическое , а статическое программирование. Отличие от java в этом случае будет
только в гибкости - в javascript можно :
- добавлять новые методы, удалять старые ( причем, в отличие от java, уже реализованные ) ;
- добавленная программма плагина может переопределить методы уже созданных инстанций, если вызывается после их создания.
Но это все , как я вижу, не есть действительно динамические качества программы , которые должны были бы проявляться как изменение тел свойств объектов, построение новых конструкторов со своими методами программой, которая УЖЕ спроектирована , а ее гибкость.
Сообщение от Dmitry A. Soshnikov
|
(б) - в рантайме, по изменяющимся условиям (например, имена колонок таблиц).
|
А это действительно будет динамикой , т.е. уже существующая программа умеет создавать новые свойства своим объектам.Но опять же здесь, если я правильно смог понять, это не так целесообразно делать по сравнению со статическим ООП java, т.е. это скорее получается удобная гибкая особенность(фича) языка. Т.е. внешним модулям можно разговаривать с таким объектом свойства которого подстраиваются в зависимости от их требований так :
find_by_name, find_by_surename , find_by_любимое _блюдо ...
а статическая ООП программа тоже самое будет делать так :
find_by("name"), find_by("surename"), find_by("любимое _блюдо") ...
Не очень в этом случае понятно в чем будет преимущество от динамичного(самостоятельн го развития программой своих объектов) кроме уже вышесказанного
будут формироваться только слова общепонятного языка общения между компонентами системы . И даже еще программисту придется понимать этот дополнительный язык - вместо одного слова find_by с параметром появляются много слов .
Раз
"как правило, меняются не тела методов (хотя, никто этого не исключает)", так если никто этого не исключает , то нельзя ли привести пример, когда действительно уже спроектированная программа строила новые конструкторы со своими методами , изменяла тела свойств объектов .
PS Поправьте меня, если я что не так понял и толковал .