Мост -шаблон отделяет абстрактную часть от части реализации, так что оба могут быть изменены независимо и могут работать гармонично вместе. Как абстрактная часть, так и часть реализации могут быть изменены независимо, не влияя друг на друга, уменьшая связь кода и улучшая масштабируемость кода.
Согласно определению GOF, роль режима моста состоит в том, чтобы «изолировать абстракцию от его реализации, чтобы они могли меняться независимо». Этот шаблон имеет большую пользу для управляемого событиями программирования, обычного в JavaScript.
Одним из наиболее распространенных и практических применений мостового режима является функция обратного вызова слушателя событий. Пример: слушатель событий, инкапсулирует операторы, обработанные событиями в функции обратного вызова и программируйте их через интерфейсы, а не в реализации.
Основная теория
Определение шаблона моста: отдельные абстрактные части из их частей реализации, чтобы они могли быть изменены независимо.
Режим моста в основном состоит из 4 ролей:
(1) Абстрактный класс
(2) Расширить абстрактные классы
(3) Реализация интерфейса класса
(4) Конкретный класс реализации
Согласно характеристикам языка JavaScript, мы упрощаем его на 2 роли:
(1) Расширить абстрактные классы
(2) Конкретный класс реализации
Как понять режим моста? Давайте приведем пример дальше
Реализация мостового режима
Ключом к пониманию идеи мостового рисунка является понимание ее идеи разделения абстрактных частей и реализации частей. Давайте приведем примеры, чтобы проиллюстрировать
Самый простой режим моста
На самом деле, jQuery каждая функция, которую мы используем чаще всего, является типичным мостовым режимом. Мы имитируем это следующим образом:
var каждое = function (arr, fn) {for (var i = 0; i <arr.length; i ++) {var val = arr [i]; if (fn.call (val, i, val, arr)) {return false; }}} var arr = [1, 2, 3, 4]; каждый (arr, function (i, v) {arr [i] = v * 2;})В этом примере мы зацикливаем массив ARR через каждую функцию. Хотя этот пример очень распространен, он содержит типичный мост.
В этом примере абстрактная часть является каждой функцией, которая является расширенным абстрактным классом, упомянутым выше, а часть реализации - FN, то есть класс конкретной реализации. Абстрактная часть и часть реализации могут быть изменены независимо. Хотя этот пример прост, это типичное применение мостового режима.
Мост режима в разработке плагина
Одним из подходящих сценариев для режима моста является разработка компонентов. Чтобы адаптироваться к различным случаям, компоненты будут иметь много изменений в разных измерениях. Режим моста может быть применен здесь, отделяя его абстракцию от реализации, что делает компонент более расширяемым.
Предположим, мы хотим разработать всплывающий плагин, который имеет различные типы всплывающих окон: обычные напоминания сообщения, напоминания об ошибках и метод отображения каждого напоминания отличается. Это типичный сценарий многомерных изменений. Сначала мы определяем два класса: обычное всплывающее окно и всплывающее окно сообщения об ошибке.
Функция MessageDialog (animation) {this.Animation = animation;} messageDialog.prototype.show = function () {this.animation.show ();} function errordialog (animation) {this.animation = animation;} errordialog.prototype.show = function () {this.animation.show ();Эти два класса являются абстрактными частями, упомянутыми выше, то есть расширенными абстрактными классами, оба из которых содержат анимацию участника.
Два всплывающих окна отображаются с помощью метода шоу, но эффекты анимации различны. Мы определяем два класса эффектов отображения следующим образом:
function lineranimation () {} lineranimation.prototype.show = function () {console.log ("it is liner");} function easeAnimation () {} easeAnimation.prototype.show = function () {console.log ("It is exate");};};};};};};};Эти два класса представляют собой конкретные классы реализации, которые достигают конкретных эффектов отображения. Так как же мы это называем?
var message = new MassageDialog (new LinerAnimation ()); Message.show (); var error = new Errordialog (new EaseAnimation ()); error.show ();
Если мы хотим добавить эффект анимации, мы можем определить другой класс эффекта и передать его.
Суммировать
Ключ к изучению модели моста состоит в том, чтобы понять разделение между абстрактной частью и частью реализации, чтобы они могли быть изменены независимо, не одержимы форме. Плагин JS имеет гибкие изменения, и разнообразие применимых сценариев очень подходит для использования этой модели для достижения. Самое важное в использовании режима моста - это выяснить различные измерения изменения в системе.
(1) Преимущества режима моста:
Изоляция абстракции от реализации помогает независимо управлять различными компонентами программного обеспечения.
(2) Недостатки режима моста:
Каждый элемент моста используется для добавления вызова функции, который оказывает некоторое негативное влияние на производительность приложения. Увеличивает сложность системы. Если функция моста используется для подключения двух функций, и одна из функций вообще не будет вызвана вне функции моста, то в настоящее время функция моста не требуется.
Мостовой режим «изолирует абстракцию от реализации так, чтобы эти два меняли независимо». Он может способствовать модульности кода, привести к более чистой реализации и повысить абстрактную гибкость. Его можно использовать для подключения набора классов и функций, и предоставляет средства для доступа к частным данным с привилегированными функциями.