Patrón de diseño JAVA 10: el modo de apariencia permite a los clientes interactuar con los subsistemas a través de una interfaz simple

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 de apariencia?

El patrón de apariencia es un patrón de diseño estructural que proporciona una interfaz unificada para acceder a un conjunto de interfaces en un subsistema. El patrón de apariencia oculta la complejidad del subsistema, permitiendo al cliente comunicarse con el subsistema a través de una interfaz simple. Interacción sin conocer el Detalles internos del subsistema.

En el patrón de apariencia, la clase de apariencia actúa como intermediaria entre el cliente y el subsistema . Encapsula un conjunto de interfaces de subsistema y proporciona una interfaz simple de alto nivel para que la use el cliente.

Los modos de apariencia son los siguientes 2 22 roles clave.

  1. Fachada : La clase de fachada es el núcleo del patrón de fachada, proporciona una interfaz simple y envuelve un conjunto de interfaces de subsistema complejas para que el cliente pueda usarla cómodamente.
  2. Subsistema : un subsistema contiene un conjunto de clases e interfaces relacionadas para completar funciones específicas. Los clientes pueden acceder a la funcionalidad del subsistema indirectamente a través de clases de fachada.

Las ventajas del modo de apariencia incluyen las siguientes 3 3Categoría 3 .

  1. Simplificando la interacción entre el cliente y el subsistema , el cliente puede acceder al subsistema a través de la interfaz unificada de la clase de apariencia sin conocer la implementación específica del subsistema.
  2. La complejidad del subsistema está oculta . El cliente no necesita comprender la estructura interna y los detalles del subsistema, solo necesita usar la interfaz proporcionada por la clase de apariencia.
  3. El grado de acoplamiento del cliente se reduce.El cliente solo depende de la clase de apariencia y no necesita depender directamente de la interfaz del subsistema.

Los escenarios de aplicación del modo de apariencia incluyen los siguientes 3 3Categoría 3 .

  1. Cuando es necesario simplificar o desacoplar un subsistema complejo , considere utilizar el patrón de fachada.
  2. Cuando necesite proporcionar una interfaz simple para acceder a un subsistema complejo , puede usar el patrón de fachada para encapsular la interfaz del subsistema.
  3. Cuando hay varios subsistemas y el cliente solo necesita interactuar con uno de los subsistemas , se puede utilizar el patrón de apariencia para proporcionar una interfaz unificada.

El patrón de apariencia puede simplificar la interacción entre el cliente y el subsistema, proporciona una interfaz simple, oculta la complejidad del subsistema y reduce el acoplamiento del cliente. Es un patrón de diseño de uso común.

Insertar descripción de la imagen aquí


2. Ejemplos de modos de apariencia

El siguiente es un ejemplo simple de código Java que muestra la implementación del modo de apariencia. Cópielo en la ejecución local.

// 子系统A
class SubsystemA {
    
    
    public void operationA() {
    
    
        System.out.println("Subsystem A operation");
    }
}

// 子系统B
class SubsystemB {
    
    
    public void operationB() {
    
    
        System.out.println("Subsystem B operation");
    }
}

// 外观类
class Facade {
    
    
    private SubsystemA subsystemA;
    private SubsystemB subsystemB;
    
    public Facade() {
    
    
        subsystemA = new SubsystemA();
        subsystemB = new SubsystemB();
    }
    
    public void operation() {
    
    
        subsystemA.operationA();
        subsystemB.operationB();
    }
}

// 客户端
public class Client {
    
    
    public static void main(String[] args) {
    
    
        Facade facade = new Facade();
        facade.operation();
    }
}

En el ejemplo anterior, SubsystemAy SubsystemBhay dos subsistemas específicos, cada uno con sus propias operaciones.

FacadeEs la clase de apariencia, que encapsula la interfaz del subsistema y proporciona un método de operación simple operation().

El cliente utiliza el subsistema llamando a los métodos de acción de la clase de fachada sin interactuar directamente con el subsistema.

Después de ejecutar el código del cliente, el resultado es:

Subsystem A operation
Subsystem B operation

El modo de apariencia encapsula la interfaz compleja del subsistema, mientras oculta la complejidad del subsistema y proporciona una interfaz simple para que la use el cliente. El cliente solo necesita interactuar con la clase de apariencia sin conocer los detalles del subsistema Detalles de implementación.

Insertar descripción de la imagen aquí


3. Escenarios de aplicación del modo apariencia.

El patrón de apariencia se puede utilizar para simplificar la complejidad del sistema y proporcionar una interfaz sencilla para que los clientes accedan a los subsistemas en las siguientes situaciones: 5 55 escenarios de aplicación.

  1. Cuando el sistema tiene subsistemas complejos y necesita proporcionar una interfaz simple con el mundo exterior , puede utilizar el patrón de apariencia. El patrón de apariencia puede encapsular la complejidad del subsistema y proporcionar una interfaz simple y unificada para el cliente, reduciendo así el acoplamiento entre el cliente y el subsistema.
  2. El patrón de apariencia se puede utilizar cuando necesite desacoplar la relación entre el cliente y el subsistema . El patrón de apariencia encapsula el subsistema en una clase de apariencia, y el cliente solo necesita interactuar con la clase de apariencia sin depender directamente de la interfaz del subsistema, lo que reduce el acoplamiento del cliente.
  3. El modo de apariencia se puede utilizar cuando se requiere una gestión unificada de múltiples subsistemas . El modo de apariencia puede proporcionar una interfaz unificada que integra las funciones de múltiples subsistemas para facilitar la gestión e invocación del cliente.
  4. Cuando necesite encapsular subsistemas jerárquicamente , puede utilizar el patrón de apariencia. El modo de apariencia puede dividir el subsistema en múltiples niveles, y cada nivel proporciona diferentes interfaces para lograr una gestión flexible del subsistema.
  5. El patrón de fachada se puede utilizar cuando es necesario introducir un nuevo subsistema en el sistema . A través del modo de apariencia, se pueden encapsular e integrar nuevos subsistemas sin afectar al cliente, logrando así la expansión y actualización del sistema.

El patrón de apariencia es adecuado para escenarios donde es necesario simplificar sistemas complejos, desacoplar clientes y subsistemas, administrar múltiples subsistemas de manera uniforme, encapsular subsistemas jerárquicamente y introducir nuevos subsistemas. Puede mejorar la mantenibilidad, escalabilidad y flexibilidad del sistema sexo.

Insertar descripción de la imagen aquí


4. Preguntas de la entrevista sobre el modo de apariencia

  1. Explique qué es el modo de apariencia y proporcione un ejemplo práctico.
  2. ¿Cuáles son las ventajas y desventajas del modo apariencia?
  3. ¿Cuál es la diferencia entre el modo apariencia y el modo adaptador?
  4. ¿Se pueden utilizar el patrón de apariencia y el patrón singleton al mismo tiempo?
  5. ¿Cómo implementar un patrón de apariencia en Java?
  6. ¿Cuáles son los escenarios aplicables para el modo de apariencia?
  7. Dé un ejemplo de la vida real sobre el uso de un patrón de apariencia.
  8. ¿Cómo manejar las dependencias entre subsistemas en el patrón de fachada?
  9. ¿Cuál es la diferencia entre el modo apariencia y el modo proxy?
  10. Si necesito agregar un nuevo subsistema, ¿cómo lo extiendo en modo apariencia?

Insertar descripción de la imagen aquí


Supongo que te gusta

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