面向切面编程AOP的浅显理解(一)

最近在看《Spring源码深度解析》这本书,里面有一章专门来介绍AOP,鉴于以前也看过用过AOP的东西,但是这些东西都比较零碎,没有很深入很系统的去了解,在这里我简单总结一下。
    一般情况下,我们都对OOP比较熟悉,面向对象编程在我们日常生活中简单都能遇得到,更容易理解,但是AOP这个面向切面编程,咋一看是懵逼的。AOP是Aspect Oriented Programming的简称,从英文字面上可以看出来是Aspect,一般情况下我们翻译为方面,切面,所谓切面,方面字面理解就是不是一个整体,而是一个部分。好比一张纸,你可以把这张纸给剪开成好多小纸条。这些剪纸的地方就是切面。你也可以这样想,这张纸上写满了代码,当我把这张纸给按照如下所示行给剪掉的时候,那么就会分离出如下这种:(>>>>>>>>>>>>>>>>>>>>>>>:代表一种切口,切面)
public void main(String args[]){
new Object.A();
>>>>>>>>>>>>>>>>>>>>>>>>>
new Object.B();
>>>>>>>>>>>>>>>>>>>>>>>>>
new Object.C();
>>>>>>>>>>>>>>>>>>>>>>>>>
}
即使剪切了,但是我们可以清楚的看到,我们并没有改变了代码的业务逻辑,这样我们就可以在这些切口这里做文章了,当我们需要统计某段业务代码的网络日志,某段业务代码的耗时,增加安全或者异常的功能的时候,此时利用AOP来实现可以减少对业务逻辑代码的污染的同时也把功能给实现了。比如下面代码:
public interface TestAopIn{
public void doFunction();
}
public class TestAopImpl implements TestAopIn{
public void doFunction(){
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
System.out.println("TestAopImpl:Implement some functions");
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
}
}
当为了增加一些功能的时候,为了防止污染业务逻辑代码,那么我们可以在剪切口进行修改,诸如:
public class TestAopImpl implements TestAopIn{
public void doFunction(){
System.out.println("before call function");
System.out.println("TestAopImpl:Implement some functions");
System.out.println("after call function");
}
}
总结:OOP是一种纵向的编程逻辑,比如继承和实现,一种类似从上而下的纵向关系,而AOP面向切面编程是一种横向切面的编程逻辑。剪切掉,然后增加相关的增量功能服务代码,这样即不会影响存量代码,又实现了增量功能。







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值