Java教程

动态代理与AOP思想

本文主要是介绍动态代理与AOP思想,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、动态代理

1.1、代理模式

什么是代理模式及其作用

Proxy Pattern(即:代理模式),23种常用的面向对象软件的设计模式之一

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

优点:

(1).职责清晰

真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。

(2).代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了的作用和保护了目标对象的作用。

(3).高扩展性

结构

一个是真正的你要访问的对象(目标类),另一个是代理对象,真正对象与代理

对象实现同一个接口,先访问代理类再访问真正要访问的对象。

代理模式简单案例

 

1.2、动态代理

动态代理它可以直接给某一个目标对象生成一个代理对象,而不需要代理类存在。

动态代理与代理模式原理是一样的,只是它没有具体的代理类,直接通过反射生成了一个代理对象。

动态代理生成技术:

1.jdk提供一个Proxy类可以直接给实现接口类的对象直接生成代理对象。

2.cglib  (spring学习)

 

Java.lang.reflect.Proxy类可以直接生成一个代理对象

 

Proxy.newProxyInstance():产生代理类的实例。仅能代理实现至少一个接口的类

ClassLoader:类加载器。固定写法,和被代理类使用相同的类加载器即可。

Class[] interface:代理类要实现的接口。固定写法,和被代理类使用相同的接口即可。

InvocationHandler:策略(方案)设计模式的应用。如何代理?

 

InvocationHandler中的invoke方法:调用代理类的任何方法,此方法都会执行

  Object proxy:代理对象本身的引用。一般用不着。

  Method method:当前调用的方法。

  Object[] args:当前方法用到的参数

1.3、AOP编程思想

1、问题:业务方法日后会很多,会有很多重复的代码

2、问题:已经存在很多的方法,并没有考虑到事务的问题,现在要求加上。

 

 

这篇关于动态代理与AOP思想的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!