Decorador de patrones de diseño

Aunque el método de plantilla anterior resuelve el problema del código redundante, las deficiencias también son obvias, solo puedo obligarme a aceptar todas las heredadas, por lo que con este segundo decorador de modo

Todavía la lógica de negocios anterior, ahora puedo escribir así

Comando de interfaz pública () {

public void excute ();

}

// Una clase para realizar el registro de salida

La clase pública Printlog implementa Command () {

Comando cmd;

Public Printlog (Comando cmd) {

this.cmd = cmd;

}

@Anular

public void excute () {

// Log

....

this.cmd.excute ();

}

}

 

// Se usa una clase para estadísticas de rendimiento

El rendimiento de clase pública implementa Command () {

Comando cmd;

Rendimiento público (Comando cmd) {

this.cmd = cmd;

}

@Anular

public void excute () {

// Estadísticas de rendimiento

.....

this.cmd.excute ();

}

}

 

public PlaceOrderCommand implementa Command () {

@Anular

vacío público excete () {

// Operación de pedido

}

}

 

psvm {

// Realice estadísticas de rendimiento e imprima registros cuando desee realizar un pedido ahora

// Solicite el pedido para crear Printlog y necesite Performance para crear Performance requiere PlaceOrderCommand

// Primero crea PlaceOrderCommand y pasa Performance, luego crea Performance y pasa en Printlog

// Ejecute primero el método excete () de Printlog, llame y luego ejecute el método execute () en Performance después de la operación de registro, y ejecute el método execute () después de la operación de registro

Comando cmd = nuevo Printlog (nuevo rendimiento (nuevo PlaceOrderCommand ()));

cmd.excute ()

// Si solo desea imprimir el registro y no desea realizar estadísticas de rendimiento

Comando cmd = nuevo Printlog (nuevo PlaceOrderCommand ());

cmd.excute ();

}

Se puede usar cualquier número de decoradores, y se pueden ejecutar en cualquier orden. La lógica de negocios final está al final. Si primero necesita ejecutar la lógica de negocios y luego contar los datos, solo necesita cambiar el orden de ejecución en este método.

 

Supongo que te gusta

Origin www.cnblogs.com/Vinlen/p/12759810.html
Recomendado
Clasificación