La cadena de patrón de responsabilidad es el patrón de comportamiento de un objeto. En el modo de cadena de responsabilidad, muchos objetos están conectados por la referencia de cada objeto a su próximo hogar para formar una cadena. La solicitud se pasa en esta cadena hasta que un objeto en la cadena decida procesar la solicitud. El cliente que realiza esta solicitud no sabe qué objeto en la cadena finalmente maneja la solicitud, lo que permite que el sistema reorganice y asigne dinámicamente responsabilidades sin afectar al cliente.
El modelo de cadena de responsabilidad es uno de los modelos de diseño de comportamiento. ¿Cómo entender la cadena de responsabilidad? La cadena de responsabilidad puede entenderse como conectando varios objetos al principio y al final. Cada nodo es un objeto, y cada objeto corresponde a una lógica de procesamiento diferente hasta que finaliza un objeto a la solicitud de procesamiento. Este modelo se convierte en el modelo de cadena de responsabilidad.
¿Podemos encontrar un prototipo del modelo de cadena de responsabilidad en la vida? Hay muchos ejemplos de este tipo. Por ejemplo, si desea comprar una casa, lo primero es que el vendedor (aplicación 1) lo recibe. Si dice que desea un descuento del 3%, no hay problema. En este momento, el vendedor tendrá la autoridad para dar un descuento del 3%, y el vendedor (Aplicación 1) lo manejará. En este momento, un hombre rico vino y dijo que quería comprar 10 unidades y pidió un descuento del 5%. El personal de ventas (solicitud 1) no tenía la autoridad para dar un descuento del 5%. Tuvo que postularse al líder superior, director de ventas y director de ventas (solicitud 2) aprobó la solicitud. En este momento, vino el esposo nacional Xiao Wang. Xiao Wang dijo que había comprado todas las propiedades del diez por ciento. En este momento, el director de ventas (Target 2) no tenía tanta autoridad y tuvo que solicitar la aprobación del CEO.
En otras palabras, cada cliente es recibido por un vendedor. El cliente propone diferentes permisos y el vendedor lo entrega a diferentes objetos para la entrega. Al cliente no le importa qué objeto maneja su solicitud, lo que reduce la relación de acoplamiento entre el remitente y el destinatario de la solicitud.
A continuación, utilizamos una aprobación de gastos de viaje de viaje de negocios como ejemplo para implementar el siguiente modelo de cadena de responsabilidad, primero definiendo una clase de liderazgo abstracto:
paquete com.test.demo; Public Abstract Class Leader {Líder protegido NexThandler; // Liderazgo anterior Public Final void HandlerRequest (int Money) {if (Money <= Limit ()) {// Selse {if (nexthandler! = null) {nexthandler.handlerRequest (dinero); // deja el liderazgo anterior para el procesamiento}}}}}}/** de aprobación de la aprobación*/Límite público de resumen ();); /** Aprobación*/ Handler Void Public Abstract (int Money); }Esta es una clase abstracta. Lo siguiente lo hereda a través de varias clases. Primero, la clase de líder del grupo:
paquete com.test.demo; Public Class Groupleader extiende al líder {public int Limit () {return 1000; // indica que el líder del equipo tiene una autoridad de aprobación de 1,000 yuanes} Public void Handler (int Money) {System.out.println ("El líder del equipo aprobó"+dinero); }}Categoría de supervisor:
paquete com.test.demo; El director de clase pública extiende al líder {@Override public int Limit () {return 5000; } @Override public Void Handler (int Money) {System.out.println ("El supervisor aprobado"+dinero); }}Categoría del gerente:
paquete com.test.demo; Public Class Manager extiende al líder {@Override public int Limit () {return 10000; } @Override public void Handler (int Money) {System.out.println ("El gerente aprobado"+dinero); }}Categoría de jefe:
paquete com.test.demo; Public Class CEO extiende líder {@Override public int Limit () {return integer.max_value; } @Override public void Handler (int Money) {System.out.println ("CEO aprobado"+dinero); }}No hay límite para los jefes. Aquí hay una definición de un miembro del personal Xiao Zhang que solicita el reembolso de viajes:
paquete com.test.demo; clase pública Xiaozhang {public static void main (string [] args) {groupleader groupleader = new Groupleader (); Director director = nuevo director (); Gerente gerente = new Manager (); CEO CEO = nuevo CEO (); Groupleader.nexthandler = director; director.nexthandler = gerente; gerente.nexthandler = CEO; Groupleader.HandlerRequest (50000); Groupleader.HandlerRequest (500); Groupleader.HandlerRequest (5000); }}Xiao Zhang solicitó tres transacciones como el líder del equipo. En este momento, el ejemplo de la operación es el siguiente:
Podemos ver que diferentes fondos son procesados por diferentes objetos. A Xiao Zhang no le importa quién los maneje. Solo necesita encontrar al líder del equipo. Esta es la característica del modelo de cadena de responsabilidad.
Todo esto es para que usted introduzca el contenido relevante en el modelo de diseño de la cadena de responsabilidades de Java. ¡Espero que te sea útil!