开发者学堂课程【Scala 核心编程 - 进阶:动态代理的几种变体】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9149
动态代理的几种变体
内容介绍:
一、动态代理的几种变体
二、总结
一、动态代理的几种变体
1. 防火墙代理
内网通过代理穿透防火墙,实现对公网的访问。
2.缓存代理
比如:当请求图片文件等资源时,先到缓存代理取,如果取到资源则ok,如果取不到资源,再到公网或者数据库取,然后缓存。
3.静态代理
静态代理通常用于对原有业务逻辑的扩充。
比如持有第二方包的某个类,并调用了其中的某些方法。比如记录日志、打印工作等。
可以创建一个代理类实现和第二方方法相同的方法,通过让代理类持有真实对象,调用代理类方法,来达到增加业务逻辑的目的。
4.Cglib 代理
使用 cglib[dode Generation Library]实现动态代理,并不要求委托类必须实现接口,底层采用asm字节码生成框架生成代理类的字节码。
asm字节码生成框架需要一个包来完成,ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。使用ASM框架需要导入asm的jar包,下载链接: asm-3.12iar
注意:asm 这里不等同汇编的含义
5.同步代理
主要使用在多线程编程中,完成多线程间同步工作
二、总结
一般来讲面试官对上述代理模式的提问较少,最常见的还是远程代理和动态代理。