代理模式延续动态代理(java实现)

动态代理

动态代理简介:

普通的代理模式(了解连接:https://www.cnblogs.com/JunDevLog/articles/13251353.html)我们知道,每一个代理类都需要创建一个类并且继承被代理类的接口。

当需要代理的接口一旦多起来就会十分繁琐。动态代理与普通代理的原理和解决的问题上是没有区别的。只是将创建代理类的操作交给了底层。 对于用户只需接收即可。

 

对于创建一个代理类来说,用户最关心的只有两个点

  • 被代理对象是谁

原因:要确定代理类的接口,对调用者来说无差别,隐藏内部实现细节。

Java:通过反射确定

  • 代理类在被代理对象实现上加上了什么功能模块。

原因:代理设计模式的初衷就是为了在原本的业务代码上加上其他功能模块(日志模块,事务模块,验证校验模块),并将两者分开实现,通过代理类连接起来。

Java:通过一个函数式接口,让用户自定义。

 

其他代码的对于代理类来说都是一样可以自动生成。所以用户只需要提供这两个,java 就可以自动将代理类创建并推送给用户。

 

 

Java提供动态生成代理类的接口如下:

 

Porxy工具类下的静态方法

 

 

 

 

 

动态代理的简单使用:

被代理类接口

 

 

 

被代理实现类

 

 

 

 

 

日志模块

 

 

 

 

 

生成自动代理工厂类

 

 

 

 

 

测试代码

 

 

 

测试输入结果:

 

 

 

 

 

 

 

 

posted @ 2020-07-08 16:11  君の园  阅读(22)  评论(0)    收藏  举报