静态代理
首先设计接口,接口是代理模式实现的基础
然后假设我们有一个片厂,他管理影片《情书》
那么对于一个影院,他购买了《情书》的播放权,作为代理商,在播放前后,需要插入广告等信息
最后写测试类
那么输出的内容为
通过这种静态代理的方式,我们可以发现代理商可以在代理对象的基础上进行自行的修改
降低系统的耦合度
缺点:代理对象需要与目标对象实现一样的接口,所以会有很多代理类,后期维护困难
JDK动态代理
与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需手动配置
我们在创建一个影厅
比如,想要使用动态代理,我们需要将代理商改写为下面的形式
实现
输出
由此可以看到,通过动态代理我们不需要再代理处指定Object的类型,而是可以交给jdk判断
cglib动态代理
这个方法可以解决关于类的动态代理
测试类