高阶函数实现AOP

一、前言

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

主要意图

将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

相关内容:百度-AOP

二、在javas中实现AOP

 

 Function.prototype.before = function (beforefn) {
            var _self = this;
            return function () {
                beforefn.apply(this, arguments);
                return _self.apply(this, arguments);
            }
        };
        Function.prototype.after = function (afterfn) {
            var _self = this;
            return function () {
                var ret = _self.apply(this, arguments);
                afterfn.apply(this, arguments);
                return ret;
            }
        };
        var func = function () {
            console.log(2);

        };
        func = func.before(function (){
            console.log(1);
        }).after(function () {
            console.log(3);
        });
        func();
        

 

三、总结

上面的例子中,把负责打印数字1和数字3的两个函数通过AOP的方式动态植入func函数。这种使用AOP的方式添加职责,也是javas中一种非常巧妙的装饰者模式。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值