代理模式。
优点1:解决了 OCP 问题。
优点2:采用代理模式的 has a ,可以降低耦合度。
*静态代理的缺点是什么?
类爆炸。假设系统中有1000个接口,那么每个接口都需要对应代理类,这样类会急剧膨胀。不好维护。
怎么解决类爆炸问题?
可以使用动态代理来解决这个问题。
动态代理还是代理模式,只不过添加了字节码生成技术,可以在内存中为我们动态的生成一个 class 字节码,这个字节码就是代理类。在内存中动态的生成字节码代理类的技术,叫做:动态代理。
*动态代理
在程序运行阶段,在内存中动态生成代理类,被称为动态代理,目的是为了减少代理类的数量。解决代码复用的问题。
在内存当中动态生成类的技术常见的包括:
. JDK 动态代理技术:只能代理接口。
.?CGLIB 动态代理技术: CGLIB ( Code Generation Library )是一个开源项目。是一个强大的,高性能,高质量的 Code 生成类库,它可以在运行期扩展 Java 类与实现 lava 接口。它既可以代理接口,又可以代理类,底层是通过继承的方式实现的。性能比 JDK 动态代理要好。(底层有一个小而快的字节码处理框架 ASM 。)
. Javassist 动态代理技术: Javassist 是一个开源的分析、编辑和创建 Java 字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶滋)所创建的。它已加入了开放源代码 JBoss?应用服务器项目,通过使用 Javassist 对字节码操作为 JBoss 实现动态" AOP "框架。
?