Является ли jQuery реализацией шаблона проектирования декоратора? - PullRequest
4 голосов
/ 25 января 2011

он украшает объекты, так что я думаю, что это так, но я не уверен.

пример

jQuery(document).hide()

изменяет объект документа, добавляя дополнительный стиль.

EDIT:

Если это не шаблон дизайна декоратора? чем это? Для него должно быть имя шаблона!

Ответы [ 4 ]

4 голосов
/ 26 января 2011

Это не добавляет новое поведение к существующему объекту.Он просто создает новый объект, который содержит существующие объекты в качестве одного из своих значений.Он отражает многие функциональные возможности существующего объекта через другой API, а также предоставляет открытый доступ к существующему объекту.

Чтобы он был должным образом оформлен, вы должны иметь доступ ко всем методам и значениямобъекты DOM передавались без прохождения через другой API или без необходимости доступа к базовому декорированному объекту вручную.

1 голос
/ 26 января 2011

jQuery наилучшим образом соответствует шаблону фасада , так как он «определяет интерфейс более высокого уровня, который делает подсистему более простой в использовании».Например, .css() и .hide() - это функции, разработанные для простоты использования, так же как и способность jQuery выполнять действие над несколькими элементами одновременно:

$('.foo').css({left: '100px', top: '100px'}).hide(); // jQuery

// Pure JavaScript
for(var a = document.getElementsByClassName('foo'), i = 0; i < a.length; ++i) {
    a[i].style.left = '100px';
    a[i].style.top = '100px';
    a[i].style.display = 'none';
}

jQuery только кажется, что подходит для декораторашаблон таким образом, как его функциональность анимации.Обычные элементы HTML DOM не предлагают синхронизированные по времени анимации и прикрепленные очереди, поэтому jQuery добавляет это.В большинстве других областей jQuery предоставляет те же функциональные возможности, что и доступ к базовым элементам DOM напрямую.

Но даже там он действительно не подходит, поскольку jQuery не «динамически поддерживает тот же интерфейс».

0 голосов
/ 26 января 2011

Нет, не в том смысле, в котором вы думаете. jQuery plugins часто использует шаблон декоратора, но базовая библиотека - нет.

Когда вы вызываете селектор jQuery, например $(document), он возвращает новый экземпляр объекта jQuery, который ссылается только на исходный объект document.

0 голосов
/ 25 января 2011

Я думаю, вы могли бы назвать это так, потому что JQuery может захватывать HTML-элементы по идентификаторам и декорацировать их с помощью функций JavaScript, ajax и других функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...