Latest web development tutorials

Modo bridge

Ponte (ponte) é usado para conseguir a dissociação e abstracção, de modo que os dois podem variar de forma independente. Este tipo de padrões de projeto pertencem modelo estrutural, fornecendo captação estruturado e ponte entre os dois para conseguir a dissociação.

Este modelo envolve como uma interface de ligação que permite que uma entidade independente do tipo de classe de interface de função. Estes dois tipos de classes podem ser estruturados para mudar e afetam uns aos outros.

Nós pelos exemplos seguintes para demonstrar o uso do modo de ponte (Ponte Padrão). Que você pode usar o mesmo método, mas diferentes classes abstratas ponte classe de implementação para desenhar círculos de cores diferentes.

introdução

Intenção: uma abstracção e execução de uma parte da separação, de modo que eles podem variar de forma independente.

Solução principal: Em uma variedade de circunstâncias podem mudar, herança de classe pode causar uma explosão, não é expansão flexível.

Quando usar: Implementação desistema de classificação pode ter vários ângulos, cada ângulo pode mudar.

Como corrigir: ponha esta classificação multi-ângulo separados, por isso são independentes das mudanças, reduzir o acoplamento entre eles.

O código de chave: implementação da classe abstrata classe dependente.

Exemplos de aplicação: 1, renascem de porco para Marechal dossel reencarnação, a reencarnação do mecanismo terrestre é dividida em dois níveis, a saber: a alma eo corpo, a primeira corresponde à abstração, que é equivalente ao de realização.Criaturas por funções de delegação, a objetos físicos chamada de função, tais criaturas podem ser selecionados de forma dinâmica. 2, interruptor na parede, você pode ver o interruptor é abstrato, não tubo de concreto dentro como conseguir.

Vantagens: 1, resumo e conseguir a separação.2, excelente escalabilidade. 3, detalha a implementação transparente para o cliente.

Desvantagens: a introdução do modo de ponte irá aumentar a dificuldade de compreensão e concepção do sistema, a relação de polimerização construído sobre camada de abstração, exigindo que o desenvolvedor para o projeto abstrato e programação.

cenários de uso: 1, se é necessário um sistema entre abstração e membro da função concreta do papel para adicionar mais flexibilidade para evitar a criação de ligação herança estática entre os dois níveis, através do modo de ponte para que eles Abstraction Layer estabelecer uma relação.2, para aqueles que não querem usar o sistema como uma herança multi-level ou herança levou a um aumento acentuado do número de classes de sistema, modo de ponte é particularmente aplicável. 3, uma classe existem duas dimensões independentes das mudanças, e estas duas dimensões precisam ser expandidos.

Nota: Para umamudança de duas dimensões independentes, utilizando o modo bridge fácil de fazer.

realização

Temos como uma ponte interface deDrawAPIe implementadoRedCircleDrawAPI classe de entidadeinterface,GreenCircle.Formaé uma classe abstrata, o objeto usoDrawAPI.BridgePatternDemo, nossas aulas de demonstração usaraclasseShapepara desenhar círculos de cores diferentes.

Modo Ponte UML diagrama

passo 1

Criar uma ponte que implementa a interface.

DrawAPI.java

DrawAPI interface pública {
   drawCircle public void (raio int, int x, int y);
}

passo 2

Criar uma entidade de implementação ponte implementaçãoDrawAPIda classe interface.

RedCircle.java

classe pública RedCircle implementa DrawAPI {
   @Override
   drawCircle public void (raio int, int x, int y) {
      System.out.println ( "desenho do círculo [color: vermelho, raio:"
         Raio + + ", X:" + x + "," + y + "]");
   }
}

GreenCircle.java

classe pública GreenCircle implementa DrawAPI {
   @Override
   drawCircle public void (raio int, int x, int y) {
      System.out.println ( "desenho do círculo [color: verde, raio:"
         Raio + + ", X:" + x + "," + y + "]");
   }
}

passo 3

DrawAPIusar interface para criar umaformaclasseabstrata.

Shape.java

Forma classe abstrata pública {
   protegidas DrawAPI drawAPI;
   Forma protegido (DrawAPI drawAPI) {
      this.drawAPI = drawAPI;
   }
   draw vazio abstrato pública ();	
}

passo 4

Criar classe de entidade implementaainterfaceShape.

Circle.java

classe pública Círculo estende Forma {
   private int x, y, raio;

   Círculo pública (int x, int y, radius int, DrawAPI drawAPI) {
      super (drawAPI);
      this.x = x;  
      this.y = y;  
      this.radius = raio;
   }

   draw public void () {
      drawAPI.drawCircle (raio, x, y);
   }
}

passo 5

Usando a classeFormaeDrawAPIdesenhar círculos de cores diferentes.

BridgePatternDemo.java

BridgePatternDemo classe pública {
   main (String [] args) public static void {
      Forma redCircle = new Circle (100.100, 10, nova RedCircle ());
      Forma greenCircle = new Circle (100.100, 10, nova GreenCircle ());

      redCircle.draw ();
      greenCircle.draw ();
   }
}

passo 6

Verifique saída.

Desenho Círculo [color: vermelho, raio: 10, x: 100, 100]
Desenho Círculo [color: verde, raio: 10, X: 100, 100]