Готовый перевод Learning JavaScript Design Patterns / Шаблоны проектирования JavaScript: Что такое шаблон - Вы уже используете их
Чтобы было понятнее насколько полезными могут быть шаблоны, давайте рассмотрим в качестве примера, то как jQuery выборки элементов по селектору.
Представьте себе, что у нас есть скрипт, который для каждого элемента DOM с классом foo найденного на странице увеличивает некий счетчик. Какой способ запросить элементы самый эффективный? Ну, есть несколько подходов к вопросу:
Выбрать все элементы на странице и сохранить ссылки на них. Далее фильтровать полученую коллекцию используя регулярое выражение(или другой способ) чтоб сохранить только елементы с класом "foo".
Использовать современную встроеную функцию типа querySelectorAll() для выбора всех елементов с класом "foo".
Использовать встроеную функцию getElementsByClassName() для простого получения необходимой коллекции.
Который варинат будет наиболее быстрый? Действительно, это будет третий вариант, он 8-10 раз эффективнее других. Однако в реальном мире он не будет работать в Internet Explorer ниже 9 версии, поэтому необходимо использовать первый вариант, так как оба второй и третий не поддерживаются.
Разработчки, которые пользуются jQuery не волнуются об данной проблеме т.к. к счастю она абстрагированая с помощю шаблона Фасад. Далее мы более детально расмотрим как шаблон обеспечивает набор абстрактных интерфейсов (таких как $el.css(), $el.animate()) и прячет за собой более сложный код. Как мы видели, это означает экономию времени на беспокойстве о деталях на уровне реализации.
За кулисами библиотека просто выбирает наиболе оптимальный подход для выбора елементов в зависимости от поддержки вашего текущего браузера и мы просто используем уровень абстракции.
Вероятно многие знакомы с селекторами jQuery $("selector"). Это значительно легче использования выборки HTML елементов на странице в сравнении с ручным выбором варианта с getElementById(), getElementsByClassName(), getElementByTagName() и так далее.
Хотя мы знаем что querySelectorAll() стремится решить данную задачу, но сравните усилия использованные в случае с jQuery интерфейсом Фасад и выбором оптимального пути самим. Они не сравнимы! Использование шаблонов может иметь реальную ценность.
В книге мы рассмотрим этот и другие шаблоны проектирования позднее.
Переведено на Нотабеноиде
http://notabenoid.org/book/42061/161333
Переводчики: SqrTT, turkeevm
Настройки
Готово:
