1.UML类图

2 代理模式实现
参照上面的UML类图,先写出Subject接口和实际对象
//抽象角色
public interface Subject {
public void request(String param);
}
//目标角色
public class RealSubject implements Subject{
@Override
public void request(String param) {
System.out.println("param:"+param);
}
}
2.1 静态代理
静态代理:代理模式原始对象
代理对象:对原始对象的方法做了增强
2.2 动态代理
jdk的动态代理
本质:在内存中构建出接口的实现类
特点:被代理对象,必须有接口
cglib动态代理
本质:在内存中生成被代理对象的【子类】
特点:可以在没有接口的情况下代理
对于不使用接口的业务类,无法使用JDK动态代理,cglib采用非常底层的字节码技术,可以为一个类创建子类,解决无接口代理问题
动态代理和静态代理区别??
解析:静态代理需要手工编写代理类,代理类引用被代理对象。
动态代理是在内存中构建的,不需要手动编写代理类
代理的目的:是为了在原有的方法上进行增强。