Latest web development tutorials

Modo puente

Bridge (puente) se utiliza para conseguir el desacoplamiento y la abstracción, de modo que los dos pueden variar independientemente. Este tipo de patrones de diseño pertenecen modelo estructural, proporcionando la abstracción estructurada y puente entre los dos para lograr la desvinculación.

Este modelo implica como una interfaz de puente que permite a una entidad independiente del tipo de clase de interfaz de función. Estos dos tipos de clases pueden ser estructurados para cambiar y se afectan entre sí.

Nos mediante los siguientes ejemplos para demostrar el uso modo de puente (puente del patrón). Que se puede utilizar el mismo método pero diferentes clases abstractas puente clase de implementación para dibujar círculos de diferentes colores.

introducción

Intención: una abstracción y la aplicación de una parte de la separación, de modo que pueden variar de forma independiente.

Solución principal: En una variedad de circunstancias pueden cambiar, la herencia de clases puede causar una explosión, no es la expansión flexible.

Cuándo utilizar: La implementación de sistema de clasificación puede tener múltiples ángulos, cada ángulo puede cambiar.

Cómo corregir: poner separa esta clasificación multi-ángulo, por lo que son independientes de los cambios, reducir el acoplamiento entre ellos.

El código de la llave: la clase depende de la implementación clase abstracta.

Ejemplos de aplicación: 1, renacidos del cerdo al cerdo Mariscal reencarnación del dosel, la reencarnación del mecanismo de la tierra se divide en dos niveles, a saber: el alma y el cuerpo, la primera corresponde a la abstracción, lo que equivale a la realización.Criaturas por delegación de funciones, objetos físicos llamada a la función, tales criaturas se pueden seleccionar de forma dinámica. 2, interruptor de la pared, se puede ver el interruptor es abstracta, no tubo de hormigón en el interior de la forma de lograr.

Ventajas: 1, resumen y lograr la separación.2, excelente escalabilidad. 3, detalles transparente la aplicación al cliente.

Desventajas: la introducción del modo de puente aumentará la dificultad de comprensión y diseño del sistema, la relación de polimerización construido sobre la capa de abstracción, lo que requiere el desarrollador para el diseño abstracto y programación.

Escenarios de uso: 1, si se requiere un sistema entre la abstracción y miembro de papel concreto de la función para añadir más flexibilidad para evitar la creación de enlace de la herencia estática entre los dos niveles, a través del modo de puente para que la Capa de Abstracción establecer una relación.2, para aquellos que no quieren utilizar el sistema como una herencia de varios niveles o herencia dado lugar a un fuerte aumento en el número de clases del sistema, modo de puente es particularmente aplicable. 3, necesita ser ampliado una clase hay dos dimensiones independientes del cambio, y estas dos dimensiones.

Nota: Para uncambio de dos dimensiones independientes, utilizando el modo de puente fácil de hacer.

realización

Tenemos como puente interfazDrawAPIe implementadoRedCircleDrawAPI clase de entidad deinterfaz,GreenCircle.La formaes una clase abstracta, el objetoDrawAPIuso.BridgePatternDemo,nuestras clases de demostración utilizalaclaseShapepara dibujar círculos de diferentes colores.

el modo de puente diagrama UML

Paso 1

Crear un puente que implementa la interfaz.

DrawAPI.java

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

Paso 2

Crear una entidad de implementación del puente aplicaciónDrawAPIde la clase de interfaz.

RedCircle.java

RedCircle clase pública implementa DrawAPI {
   @ Override
   drawCircle public void (radio, int x, int y) {
      System.out.println ( "El dibujo del círculo [color: rojo, radio:"
         + + Radio ", x:" + x + "," + y + "]");
   }
}

GreenCircle.java

GreenCircle clase pública implementa DrawAPI {
   @ Override
   drawCircle public void (radio, int x, int y) {
      System.out.println ( "El dibujo del círculo [color: verde, radio:"
         + + Radio ", x:" + x + "," + y + "]");
   }
}

paso 3

DrawAPIusar interfaz para crear unaformaclaseabstracta.

Shape.java

Forma clase abstracta pública {
   protegida DrawAPI drawAPI;
   Forma protegida (DrawAPI drawAPI) {
      this.drawAPI = drawAPI;
   }
   public void empate resumen ();	
}

Paso 4

Crear clase de entidad implementalainterfazShape.

Circle.java

Círculo clase pública se extiende en forma de {
   private int x, y, radio;

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

   sorteo public void () {
      drawAPI.drawCircle (radio, x, y);
   }
}

paso 5

Uso de la claseShapeyDrawAPIdibujar círculos de diferentes colores.

BridgePatternDemo.java

BridgePatternDemo public class {
   principales argumentos (String []) {public static void
      Forma redCircle = new Circle (100.100, 10, nueva RedCircle ());
      Forma greenCircle = new Circle (100.100, 10, nueva GreenCircle ());

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

paso 6

Verifique la salida.

Dibujo Círculo [color: rojo, radio: 10, x: 100, 100]
Dibujo Círculo [color: verde, radio: 10, x: 100, 100]