JAVA中动态代理AOP的实现与思考
来源:互联网 发布:贴图用什么软件 编辑:程序博客网 时间:2024/05/21 05:06
在做开发的时候,总是有一些功能与实际的业务并不相关,但是还要渗透到自己的业务代码里。比如日志打印功能,认证功能,消息发送功能.由于这些公用的代码要在自己的业务代码里完成一定的辅助功能,造成了自己的业务代码里渗透了不相关的业务代码。
所以就产生了代理模式来完成这些功能,使用代理模式可以只关心自己的业务逻辑代码,而那些通用的日志打印功能,权限功能可以使用代理类来实现。比如我要发送一个订单邮件功能,为此要做一个订单邮件的日志代理类,类图结构如图所示:
定义日志接口ILog,订单系统接口IOrderSytem,实现日志和订单系统功能LogImpl,OrderSystemImple,做一个订单系统的代理类OrderSystemProxy,在客户端Client实例化一个OrderSystemProxy类,把日志功能与订单功能注入的代理类里。并调用相应的订单方法去生成订单与发送订单确认邮件。
初看这个设计方案可以使业务功能与辅助功能的代码分离开来.但若系统里面有其他的业务类也要做日志与认证功能,那么就会设计与此业务类相对应的业务代理类。这样代理类就不断的线性增长,导致代理类库庞大。有更好的方法吗?答案是肯定的。
在JDK1.3以后,JAVA就提供一个动态代理的功能,它可以代理任何业务类,然后在调用业务类的任何方法的时候,会调用相应的代理类日志或认证功能,达到了面向切面编程的效果。把上面的静态代理模式改成动态代理模式,类图结构如图所示:
总结:
使用动态代理可以完成任何业务类,任何业务方法的代理,但是使用动态代理的前提条件必须要定义业务类的接口,否则动态代理就无法实现。
- JAVA中动态代理AOP的实现与思考
- Java动态代理实现AOP
- java动态代理实现aop
- java动态代理实现AOP
- java动态代理实现AOP
- java动态代理与AOP
- Java 动态代理的实现-代理模式--aop
- java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总
- 【Java进阶-Java动态代理与AOP】04 实现InvocationHandler的invoke方法
- java的动态代理(AOP)
- Java -AOP实现原理-动态代理的实现
- Java实现动态代理实现AOP
- Java 实现动态代理实现AOP
- AOP的实现原理—反射与动态代理
- Spring中AOP的实现原理(动态代理)
- JAVA动态代理实现aop的简单例子
- Java实现动态代理(cglib,aop)的过程
- 【Java进阶-Java动态代理与AOP】
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page124
- Pro PHP: Patterns, Frameworks, Testing and More
- Pro WPF with VB 2008: Windows Presentation Foundation with .NET 3.5
- GTK+图形化应用程序开发学习笔记(九)—菜单
- Windows Home Server Users Guide
- JAVA中动态代理AOP的实现与思考
- The Craft of System Security
- Go Google: 20 Ways to Reach More Customers and Build Revenue with Google Business Tools
- 一个开源的高精度运算库——gmp
- OpenGL(R) Programming on Mac OS(R) X: Architecture, Performance, and Integration
- BlackBerry Enterprise Server for Microsoft® Exchange
- Joomla! A User's Guide: Building a Successful Joomla! Powered Website
- Switching to the Mac: The Missing Manual, Leopard Edition
- GTK+图形化应用程序开发学习笔记(十)—工具条