Patrón de controlador frontal
El patrón de controlador frontal (Front Controller Pattern) se utiliza para proporcionar un mecanismo centralizado de manejo de solicitudes; todas las solicitudes serán manejadas por un único controlador. Este controlador puede realizar autenticación/autorización, registro de logs o seguimiento de solicitudes, y luego enviar la solicitud al controlador correspondiente. A continuación se presentan las entidades de este patrón de diseño.
- Controlador frontal (Front Controller)- Un único manejador que procesa todos los tipos de solicitudes de la aplicación, ya sea una aplicación basada en web o una aplicación de escritorio.
- Despachador (Dispatcher)- El controlador frontal puede utilizar un objeto despachador para enviar las solicitudes al manejador concreto correspondiente.
- Vista (View)- La vista es el objeto creado para la solicitud.
Resumen
Intención
Utilizar un controlador central (o procesador) para reenviar las solicitudes del cliente al manejador apropiado.
Problemas principales que resuelve
- Resuelve el problema de la dispersión del manejo de solicitudes en aplicaciones web, proporcionando un punto de entrada unificado para el procesamiento de solicitudes.
Escenarios de uso
- Cuando se necesita gestionar y distribuir de manera unificada las solicitudes en una aplicación web.
Método de implementación
- Controlador frontal: actúa como el punto único de entrada de las solicitudes, encargado de recibirlas y reenviarlas.
- Vista: se utiliza para presentar los resultados del procesamiento.
- Manejador: el componente que realmente ejecuta el procesamiento de la solicitud.
Código clave
- Controlador frontal: contiene la lógica para decidir a qué manejador se reenvía la solicitud.
- Mapeo de manejadores: asigna la solicitud al manejador correspondiente.
Ejemplos de aplicación
- Framework web: como DispatcherServlet en Spring MVC, que actúa como controlador frontal.
Ventajas
- Procesamiento centralizado de solicitudes: simplifica el flujo de procesamiento de solicitudes, fácil de gestionar y mantener.
- Reducción de código duplicado: reduce el código duplicado en vistas y manejadores mediante la reutilización del controlador.
- Fácil de extender: al añadir nueva lógica de procesamiento de solicitudes, solo se necesita agregar un nuevo manejador.
Desventajas
- Puede convertirse en un cuello de botella de rendimiento: todas las solicitudes pasan a través del controlador frontal, lo que puede afectar el rendimiento.
Consejos de uso
- Cuando se necesita construir una aplicación web con un flujo claro de procesamiento de solicitudes, considere utilizar el patrón de controlador frontal.
Notas
- Asegúrese de que el controlador frontal no se convierta en un cuello de botella de rendimiento debido al procesamiento centralizado de todas las solicitudes.
Principales roles involucrados
Controlador frontal (Front Controller):
- Actúa como el punto único de entrada de las solicitudes, se encarga de recibirlas y decidir cómo procesarlas.
Manejador (Handler):
- El componente que realmente ejecuta el procesamiento de la solicitud.
Vista (View):
- Se utiliza para presentar la respuesta generada por el manejador.
Mapeo de manejadores (Handler Mapping) (opcional):
- Asigna la solicitud al manejador correspondiente.
Cliente (Client) (opcional):
- El navegador web o cliente API que envía la solicitud.
El patrón de controlador frontal, al proporcionar un mecanismo centralizado de manejo de solicitudes, ayuda a construir aplicaciones web fáciles de mantener y extender.
Implementación
CrearemosFrontController、Dispatcheractuando respectivamente como el controlador frontal y el despachador.HomeViewyStudentViewRepresentan varias vistas creadas para las solicitudes recibidas por el controlador frontal.
FrontControllerPatternDemo, nuestra clase de demostración utilizaFrontControllerpara demostrar el patrón de diseño de controlador frontal.
Paso 1
Crear la vista.
HomeView.java
StudentView.java
Paso 2
Crear el despachador Dispatcher.
Dispatcher.java
Paso 3
Crear el controlador frontal FrontController.
FrontController.java
Paso 4
UsarFrontControllerpara demostrar el patrón de diseño de controlador frontal.
FrontControllerPatternDemo.java
Paso 5
Ejecutar el programa y mostrar el resultado:
Page requested: HOME User is authenticated successfully. Displaying Home Page Page requested: STUDENT User is authenticated successfully. Displaying Student PageOtras extensiones