O padrão da ponte separa a parte abstrata da parte de implementação, para que ambos possam ser alterados de forma independente e possam funcionar harmoniosamente juntos. Tanto a parte abstrata quanto a parte da implementação podem ser alteradas de forma independente, sem se afetar, reduzindo o acoplamento do código e melhorando a escalabilidade do código.
De acordo com a definição de GoF, o papel do modo Bridge é "isolar a abstração de sua implementação para que os dois possam mudar de forma independente". Esse padrão é de grande benefício para a programação orientada a eventos comum em JavaScript.
Uma das aplicações mais comuns e práticas do modo Bridge é a função de retorno de chamada do ouvinte do evento. Exemplo: O ouvinte de eventos, encapsula declarações processadas por eventos em funções de retorno de chamada e programá-las através de interfaces e não implementações.
Teoria básica
Definição do padrão da ponte: separam partes abstratas de suas peças de implementação para que todas possam ser alteradas de forma independente.
O modo Bridge consiste principalmente em 4 funções:
(1) Classe abstrata
(2) expandir as classes abstratas
(3) Implementar interface de classe
(4) classe de implementação específica
De acordo com as características da linguagem JavaScript, simplificamos em 2 funções:
(1) expandir as classes abstratas
(2) classe de implementação específica
Como entender o modo Bridge? Vamos dar um exemplo a seguir
Implementação do modo Bridge
A chave para entender a idéia de um padrão de ponte é entender sua idéia de separar partes abstratas e realizar partes. Vamos dar exemplos para ilustrar
O modo de ponte mais fácil
De fato, o jQuery cada função que usamos com mais frequência é um modo de ponte típico. Nós simulamos o seguinte:
var cada = função (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]; cada (arr, função (i, v) {arr [i] = v * 2;})Neste exemplo, lidamos com a matriz ARR através de cada função. Embora este exemplo seja muito comum, ele contém um padrão de ponte típico.
Neste exemplo, a parte abstrata é cada função, que é a classe abstrata expandida mencionada acima, e a parte da implementação é FN, ou seja, a classe de implementação concreta. A parte abstrata e a parte da implementação podem ser alteradas de forma independente. Embora este exemplo seja simples, é uma aplicação típica do modo de ponte.
Modo de ponte no desenvolvimento de plug-in
Um cenário adequado para o modo Bridge é o desenvolvimento de componentes. Para se adaptar a diferentes ocasiões, os componentes terão muitas mudanças em diferentes dimensões. O modo da ponte pode ser aplicado aqui, separando sua abstração da implementação, tornando o componente mais extensível.
Suponha que queremos desenvolver um plug-in pop-up, que tenha diferentes tipos de pop-ups: lembretes de mensagens comuns, lembretes de erros e o método de exibição de cada lembrete é diferente. Este é um cenário de mudança multidimensional típico. Primeiro, definimos duas classes: janela pop-up de mensagem normal e janela pop-up de mensagem de erro.
function MessAgedialog (animação) {this.animation = animação;} Messagedialog.prototype.show = function () {this.animation.show ();} função errordialog (animação) {this.animation = animação;} errdialog.prototype.show = {) {)Essas duas classes são as partes abstratas mencionadas acima, ou seja, as classes abstratas estendidas, que contêm uma animação de membros.
As duas janelas pop-up são exibidas através do método Show, mas os efeitos da animação são diferentes. Definimos duas classes de efeito de exibição da seguinte forma:
function lineRanimation () {} lineRanimation.prototype.show = function () {console.log ("é liner");} function easeanimation () {} easeanimation.prototype.show = function () {console.log ("é facilidade");}Essas duas classes são classes de implementação específicas, que alcançam efeitos de exibição específicos. Então, como chamamos isso?
var message = new Messagedialog (new LineRanimation ()); message.Show (); var error = new Errordialog (new easeanimation ()); error.show ();
Se quisermos adicionar um efeito de animação, podemos definir outra classe de efeito e passar por ela.
Resumir
A chave para aprender o modelo da ponte é entender a separação entre a parte abstrata e a parte da implementação, para que os dois possam ser alterados independentemente sem serem obcecados com a forma. O plug-in JS tem mudanças flexíveis e a variedade de cenários aplicáveis é muito adequada para usar esse modelo para alcançar. A coisa mais importante sobre o uso de um modo de ponte é descobrir as diferentes dimensões de mudança no sistema.
(1) Vantagens do modo Bridge:
Isolar a abstração da implementação ajuda a gerenciar independentemente vários componentes do software.
(2) Desvantagens do modo Bridge:
Cada elemento da ponte é usado para adicionar uma chamada de função, que tem algum impacto negativo no desempenho do aplicativo. Aumenta a complexidade do sistema. Se uma função de ponte for usada para conectar duas funções e uma das funções não será chamada fora da função da ponte, a função da ponte não será necessária no momento.
O modo da ponte "isola a abstração da implementação para que os dois mudem de forma independente". Ele pode promover a modularidade do código, levar a uma implementação mais limpa e melhorar a flexibilidade abstrata. Ele pode ser usado para conectar um conjunto de classes e funções e fornece um meio de acessar dados privados com funções privilegiadas.