AOP

1.   AOP概述

AOP的运行模型与我们平时所用的事件监听模型非常相似。一般的事件监听模型是在事件源上维护监听器列表,然后当事件源发生改变时,由事件源向监听者发送事件通知,监听者在收到事件通知后再采取相应操作。AOP的思路与这个大体相同,但是他的监听器列表和事件类型描述都不在事件源上,而是被外提到Aspect中,在Aspect内部,程序员通过AOP提供的语法,描述他所感兴趣的事件类型,和当对应事件发生时,需要通知哪些监听者。

这样做的一个好处是,事件源和监听者可以完全不知道对方的存在,因为他们之间的通信是由Aspect来负责的,因此可以降低了模块之间的耦合度。二是事件源的模型变得更加纯粹,因为维护监听者列表和发送事件通知都不应该是模型本身的特性,所以把他们外提到Aspect以后,可以让模型更加纯粹,更符合实际。三是增加系统的灵活性,由于可以在模型外部,Aspect内部动态的为原有模型添加功能,所以可以在不修改代码的前提下,动态的增加系统的功能。

 

2.   AOP核心概念

AOP的核心,一般来说应该包括三个部分:连接点,通知,类型间声明。

连接点(join point),相当于事件模型中的事件类型描述,他描述了Aspect应该在什么时候截获系统的控制权,让程序从原来的运行轨迹当中切换到Aspect中来。一般来说,对于一个类而言,他可能的事件类型都是围绕着他的元数据而言的,类的元数据主要包括了构造函数,字段,方法。因此,AOP也只提供了与这三个相对应的连接点描述。具体来说,包括了构造函数的调用/执行,字段的获取/设置,方法的调用/执行。

通知(advice),相当于事件模型中的通知机制,当连接点所描述的事件真正发生时,AOP将执行与该连接点相关联的通知,从而使得通知能最终发送到所需的监听者手上。

类型间声明(Inter-Type),他与上述的事件通知没有任何关系,但是,她却是一个非常重要的,用于分离模型和为已有代码动态添加行为的一种手段。我们可以在Aspect当中为模型中的某个类增加构造函数,字段,方法声明,父类和父接口等,他的效果就像在对应的类内部增加一样。这样做的一个好处就是,可以大大提高了系统的灵活性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值