面向切面编程(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(面向切面编程,装饰者模式)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值