博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AOP简介AOP是什么?
阅读量:6902 次
发布时间:2019-06-27

本文共 1211 字,大约阅读时间需要 4 分钟。

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

AOP是什么?

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

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

     比如,记录日志:
     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防止了代码变得混乱。(

本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2007/03/09/2912422.html  ,如需转载请自行联系原作者

你可能感兴趣的文章
Announcing Zuul: Edge Service in the Cloud--转
查看>>
分享Kali Linux 2017年第17周镜像文件
查看>>
选择排序与冒泡排序
查看>>
ToastUtil【简单的Toast封装类】【未自定义Toast的显示风格】
查看>>
新技术的学习
查看>>
架构师之路--谈业务的合理架构
查看>>
Apache + Tomcat 负载均衡 session复制
查看>>
暴力操作节点
查看>>
java多线程关键字volatile的使用
查看>>
Aptana下Django1.6以后的项目模板结构改造
查看>>
LoaderManager使用具体解释(四)---实例:AppListLoader
查看>>
软件系统的架构设计
查看>>
poj1159--Palindrome(dp:最长公共子序列变形 + 滚动数组)
查看>>
Codeforces #282 div 1 C Helping People 题解
查看>>
Java华氏转摄氏
查看>>
centos6.8服务器配置之编译安装PHP、配置nginx
查看>>
ddddddd
查看>>
Android 开发之 ---- 底层驱动开发(一)
查看>>
分享到朋友圈实现
查看>>
SQL Server 用链接服务器 同步SqlServer与MySQL
查看>>