Я новичок в JavaScript / jQuery, но когда я увидел примеры объединения методов, это сразу показалось мне знакомым. Другие интерфейсы, такие как LINQ, делают нечто подобное, когда тип возвращаемого значения набора методов совпадает с типом, с которым они работают (TweetSharp делает нечто очень похожее). Это пример свободного программирования? Многое из того, что я читал о jQuery, говорит о том, что другие библиотеки «позаимствовали» эту идею объединения методов - возникла ли эта идея с jQuery?
Является ли метод jQuery цепочкой примеров свободного программирования?
Ответы (3)
jQuery действительно сильно следует шаблону построителя / fluent interface, но он, конечно, не является пионером шаблона проектирования в целом. Другие библиотеки, вероятно, последовали за jQuery и позаимствовали его подход. Это просто слава jQuery, которая заставляет его выглядеть так, как будто он исходит из jQuery.
Само по себе объединение в цепочку не обеспечивает плавного интерфейса. Термин "свободный интерфейс", по-видимому, популяризировал Мартин Фаулер, один из наиболее распространенных современные авторы по теории программного обеспечения (хотя и не он изобрел методику).
Фаулер поясняет, что цепочка методов просто относится к методам, которые возвращают ссылку на объект, в то время как свободный интерфейс больше похож на язык, специфичный для предметной области, и (в идеале) спроектирован так, чтобы поток был больше похож на естественный язык, чем на код.
JQuery определенно не изобретал связывание методов; это уже было возможно в JavaScript и многих других языках.
Возможно, цепочка методов была узаконена в глазах многих людей с помощью JQuery. Многие программисты на Java по-прежнему настаивают на том, что функции объекта должны возвращать только другие объекты, но не сам объект. Насколько я помню, 10 лет назад меня исключили из списка рассылки Java за то, что я посоветовал обратное :)