Programación y decoradores orientados a aspectos de "información seca"
Programación Orientada a Aspectos
~~~~ Bueno, echemos un vistazo a la Enciclopedia Baidu ~~~~
AOP es la abreviatura de Programación Orientada a Aspectos. lo que significa: La programación orientada a aspectos es una tecnología que logra el mantenimiento unificado de las funciones del programa mediante precompilación y agentes dinámicos en tiempo de ejecución. AOP es la continuación de OOP, un punto caliente en el desarrollo de software, un contenido importante en el marco Spring y un paradigma derivado de la programación funcional. AOP se puede utilizar para aislar varias partes de la lógica empresarial, reduciendo así el acoplamiento entre las distintas partes de la lógica empresarial, mejorando la reutilización del programa y mejorando la eficiencia del desarrollo.
Sin más, tomemos un ejemplo clásico de Internet:
Lógica de negocio:
Negocio principal: modificar la base de datos
Punto de entrada 1: imprimir el registro antes de la modificación
Punto de entrada 2: imprimir el registro después de la modificación
Principio: de hecho, consiste en envolver la actualización comercial principal Db dos veces y devolver un nuevo método. El nuevo método llamará al método de corte antes y después de llamar al método original para evitar cambios directos en el método principal.
Decorador
1 Decoración de la clase
2 Decoración del método de la clase
clase Simios {
@eatMore
eat() {
console.log('comer fruta')
}
}
// Método de modificación
function eatMore(className, propName, descriptor) {
//console.log(descriptor)
let value = descriptor.value
descriptor.value = function() {
console.log('comer tierra')
value()
}
devolver descriptor
}
let apes1 = new Apes()
apes1.eat()
Utilice el descriptor de propiedad del descriptor para ver que Object.defineProperty depende de ES5
Revisar Object.defineProperty
3. Decoración para operadores de acceso
4. Modificar paso de parámetros
Aplicación
1. Aplicación en el cálculo de secuencia de Fibonacci
2. Verificación de tipo en el operador de acceso -set