面向切面编程(AOP)

一、概念

Aspect Oriented Programming(AOP),译作面向切面编程/面向方面的程序设计/剖面导向程序设计

1、对OOP(面向对象编程)的一个横向的补充

2、是面向切面软件开发的基础

3、其中“通知”是切面的具体实现,分为before(前置通知)、after(后置通知)、around(环绕通知)

二、应用目的

针对业务处理过程中的的某个步骤或阶段进行切面提取,抽离于业务无关的功能,用**“动态”插入的方式嵌到各业务逻辑中,以降低逻辑过程中各部分之间的低耦合**性,并提高特定切面处理逻辑功能的复用性。

同时,在清晰业务逻辑的同时,减弱编程时的逻辑分支复杂度,只需考虑主流程,而无需考虑那些不重要的流程。

三、应用场景

主要业务场景:日志打印、统计数据、数据验证、安全控制、异常处理等等。

前端框架使用:dojoyui3中AOP被提升至自定义事件的一种内在机制

四、图示解析

在这里插入图片描述

五、基本代码实现

const Decorator = {
    before(decor, target) {
        return () => {
            decor.apply(target, arguments);
            return target.apply(target, arguments);
        };
    },

    after(decor, target) {
        return () => {
            const result = target.apply(target, arguments);
            decor.apply(target, arguments);
            return result;
        };
    },

    around(decor, target) {
        return () => {
            decor.apply(target, arguments);
            const result = target.apply(target, arguments);
            decor.apply(target, arguments);
            return result;
        };
    }
};

function sayHello() {
    console.info('hello')
}

sayHello = Decorator.before(() => {
    console.info('before say hello');
}, sayHello);

sayHello = Decorator.after(() => {
    console.info('after say hello');
}, sayHello);

sayHello = Decorator.around(() => {
    console.info('around say hello');
}, sayHello);

sayHello();

输出:

1. around say hello
2. before say hello
3. hello
4. after say hello
5. around say hello

六、相关资料

面向切面编程

轻松理解AOP思想(面向切面编程)

Javascript aop(面向切面编程)之around(环绕)

面向切面的程序设计

用AOP来让你的JS代码变得更有可维护性吧

Javascript 中的 AOP

用AOP改善javascript代码

JavaScript实现AOP(面向切面编程,装饰者模式)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值