AOP是什么

转:

AOP是什么?

  Aspect-oriented programming (AOP) ,从名字上说类似oop Object Oriented Programming。AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。而什么是方面哪?


方面也可以认为是关注点,在一个系统中存在很多关注点,比如记录日志,授权等。面向对象的趋势是使系统耦合越来越小,设计模式也是如此。然而,这些关注点是最普通的功能,也许会贯穿系统始终,使系统的开发,尤其是维护带来很多的问题,到处重复着相同的代码。
比如,记录日志:

Java代码 复制代码
  1.      public interface MyBizInterface {    
  2.         
  3.      public void myBizMethod();    
  4. }    
  5.   
  6. public class MyBizObject implements MyBizInterface {    
  7.         
  8.      private   Logger logger = Logger.getLogger(getClass().getName());    
  9.         
  10.      public void myBizMethod(){    
  11.             
  12.      try {    
  13.             
  14.          logger.info("start to execute...");    
  15.            
  16.          //do something here   
  17.         
  18.          logger.info("end processing...");     
  19.      } catch (Exception e){    
  20.             
  21.          logger.info("exception happends..."+e.getMessage());    
  22.            
  23.      }       
  24.      }    
  25. }   
     public interface MyBizInterface { 
     
     public void myBizMethod(); 
} 

public class MyBizObject implements MyBizInterface { 
     
     private   Logger logger = Logger.getLogger(getClass().getName()); 
     
     public void myBizMethod(){ 
         
     try { 
         
         logger.info("start to execute..."); 
        
         //do something here
     
         logger.info("end processing...");  
     } catch (Exception e){ 
         
         logger.info("exception happends..."+e.getMessage()); 
        
     }    
     } 
} 


     上面的代码很简单,一个简单的业务逻辑myBizMethod(),当然我们需要记录日志,但是这样商业逻辑的代码和日志记录代码混合在一起,这给日后的维护带来一定的困难,同时存在大量的代码重复。
     同样是方面(关注点),应该有主次轻重之分,比如,上面的例子,显然业务逻辑比较重要,不过你非说日志记录重要也行。所以,我们应该把日志记录代码(次要)从重要的业务逻辑分离出来。要将这些代码分离就涉及到一个问题,我们必须知道商业逻辑代码何时被调用,这样我们好插入日志记录代码。一般来说要截获一个方法,我们可以采用回调方法或者动态代理。动态代理一般要更加灵活一些,目前多数的AOP Framework也大都采用了动态代理来实现。
     有了AOP,我们就可以拦截主要的业务逻辑,把我们不是特别重要的代码【注入】到里面去,AOP防止了代码变得混乱。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值