Patrón de diseño JAVA 9: modo puente, que separa la parte abstracta de la parte de implementación

Página de inicio del autor : Diseñador Xiao Zheng
Sobre el autor : 3 años de experiencia en desarrollo de pila completa de JAVA, centrándose en la tecnología JAVA, personalización del sistema, guía remota, comprometido con la transformación digital empresarial, experto en blogs CSDN, bloguero experto de la comunidad Alibaba Cloud, nube Blue Bridge Instructor del curso.


Insertar descripción de la imagen aquí


1. ¿Qué es el modo puente?

El patrón puente es un patrón de diseño estructural que separa la parte abstracta de la parte de implementación para que puedan cambiar de forma independiente. El patrón puente logra desacoplamiento y flexibilidad al convertir las relaciones de herencia en relaciones de asociación.

En el modo puente, la parte abstracta está representada por una clase o interfaz abstracta, y la parte de implementación está representada por una o más clases concretas. La clave del modo puente es combinar la parte abstracta y la parte de implementación incluyendo una referencia . a la clase de implementación en la clase abstracta .

La idea central del patrón puente es separar la abstracción y la implementación para que puedan cambiar de forma independiente. Este patrón de diseño es muy adecuado para los siguientes 3 33 situaciones.

  1. Cuando una clase tiene dos o más dimensiones que cambian de forma independiente, se puede utilizar el patrón de puente para desacoplarlas de modo que los cambios en cada dimensión se puedan realizar de forma independiente.
  2. El patrón puente se puede utilizar cuando necesite establecer una relación estable entre la parte abstracta y la parte de implementación, y cuando necesite evitar crear una gran cantidad de subclases en cada dimensión.
  3. Cuando una clase necesita extenderse en múltiples plataformas o sistemas, el uso del patrón puente puede hacer que la parte de extensión sea independiente de la parte abstracta.

El patrón puente proporciona una solución de diseño más flexible y escalable al separar la abstracción y la implementación, lo que hace que la estructura del sistema sea más clara y reduce el acoplamiento entre clases.

Insertar descripción de la imagen aquí


2. Ejemplo de modo puente

A continuación se muestra un ejemplo de código Java simple que demuestra la implementación del modo puente.

Primero, definimos una clase abstracta Shapepara representar la forma .

public abstract class Shape {
    
    
    protected Color color;

    public Shape(Color color) {
    
    
        this.color = color;
    }

    public abstract void draw();
}

Luego, definimos una clase de implementación Circleque representa un círculo .

public class Circle extends Shape {
    
    
    public Circle(Color color) {
    
    
        super(color);
    }

    @Override
    public void draw() {
    
    
        System.out.println("Draw a circle in " + color.getColor());
    }
}

A continuación, definimos una clase de implementación Rectanglepara representar un rectángulo .

public class Rectangle extends Shape {
    
    
    public Rectangle(Color color) {
    
    
        super(color);
    }

    @Override
    public void draw() {
    
    
        System.out.println("Draw a rectangle in " + color.getColor());
    }
}

A continuación, definimos una clase abstracta Colorque representa el color .

public abstract class Color {
    
    
    public abstract String getColor();
}

Luego, definimos una clase de implementación RedColorpara representar el rojo .

public class RedColor extends Color {
    
    
    @Override
    public String getColor() {
    
    
        return "red";
    }
}

Finalmente, podemos crear objetos y realizar llamadas usando el modo puente .

public class BridgePatternDemo {
    
    
    public static void main(String[] args) {
    
    
        Color red = new RedColor();
        Shape circle = new Circle(red);
        circle.draw();

        Color green = new GreenColor();
        Shape rectangle = new Rectangle(green);
        rectangle.draw();
    }
}

Al ejecutar el código anterior, el resultado es:

Draw a circle in red
Draw a rectangle in green

Las dos dimensiones de forma Shapey color Colorse separan mediante el modo puente y se pueden expandir y cambiar de forma independiente sin modificar el código original.

Insertar descripción de la imagen aquí


3. Escenarios de aplicación del modo puente.

El modo puente está por debajo de 4 4Aplicable a situaciones de Categoría 4 , estudie detenidamente.

  1. Utilice el patrón puente cuando desee que las implementaciones abstractas y concretas se puedan ampliar de forma independiente. El patrón puente puede separar las partes de abstracción e implementación para que puedan cambiar de forma independiente sin afectarse entre sí.
  2. El patrón puente se utiliza cuando una clase tiene múltiples dimensiones que cambian de forma independiente. El patrón puente puede separar los cambios en diferentes dimensiones en diferentes jerarquías de clases, de modo que los cambios en cada dimensión se puedan llevar a cabo de forma independiente.
  3. Utilice el patrón puente cuando desee establecer una relación estable entre la parte abstracta y la parte de implementación y evite crear una gran cantidad de subclases en cada dimensión. El patrón puente puede separar la parte abstracta y la parte de implementación para que puedan cambiar de forma independiente sin causar problemas de explosión de clases.
  4. El modo puente se utiliza cuando se requiere escalar a través de múltiples plataformas o sistemas. El modo puente puede hacer que la parte de extensión sea independiente de la parte abstracta y se puede modificar y ampliar fácilmente en diferentes plataformas o sistemas.

Los siguientes son 4 4Se pide a los estudiantes que estudien detenidamente estos 4 escenarios de aplicación comunes del modo puente.

  • La relación entre la ventana en la interfaz gráfica y el adaptador del sistema operativo se puede realizar utilizando el modo puente. La ventana puede ser la parte abstracta y los adaptadores para diferentes sistemas operativos pueden ser la parte de implementación.
  • Para diferentes tipos de almacenamiento de datos, como bases de datos relacionales y bases de datos no relacionales, puede utilizar el modo puente para abstraer una interfaz de capa de acceso a datos común y luego implementar clases de acceso a datos específicas basadas en diferentes tipos de bases de datos.
  • En el desarrollo de juegos, el modo puente se puede usar para manejar diferentes atributos de los personajes del juego. Los personajes se pueden usar como partes abstractas y los atributos se pueden usar como partes de implementación. A través del modo puente, los atributos de los personajes se pueden agregar o agregar de manera flexible. modificado.
  • En el control remoto de equipos electrónicos, el modo puente se puede utilizar para separar las funciones del control remoto de diferentes equipos electrónicos, de modo que el control remoto pueda ser adecuado para diferentes equipos electrónicos.

El patrón puente se puede utilizar en cualquier escenario en el que la abstracción y la implementación deban separarse y se puedan cambiar de forma independiente. Proporciona una solución de diseño flexible y extensible que puede reducir el acoplamiento entre clases y facilitar la expansión y modificación funcional.

Insertar descripción de la imagen aquí


4. Preguntas de la entrevista en modo puente

  1. ¿Qué es el modo puente? ¿Puedes explicarlo?
  2. ¿Cuál es la diferencia entre Bridge Pattern y otros patrones de diseño?
  3. ¿Cuáles son las ventajas del modo puente?
  4. ¿Cuáles son las desventajas del modo puente?
  5. ¿Puedes dar un ejemplo práctico de la aplicación del modo puente?
  6. ¿Cuál es la diferencia entre el modo puente y el modo adaptador?
  7. ¿Cuándo debería utilizar el modo puente?
  8. ¿Cuál es la diferencia entre el modo puente y el modo combinado?
  9. ¿El modo puente aumenta la complejidad del código?
  10. ¿Cumple el patrón puente con el principio de responsabilidad única y el principio abierto-cerrado?

Insertar descripción de la imagen aquí


Supongo que te gusta

Origin blog.csdn.net/qq_41464123/article/details/133011949
Recomendado
Clasificación