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採用非常底層的字節碼技術,可以爲一個類創建子類,解決無接口代理問題
動態代理和靜態代理區別??
解析:靜態代理需要手工編寫代理類,代理類引用被代理對象。
動態代理是在內存中構建的,不需要手動編寫代理類
代理的目的:是爲了在原有的方法上進行增強。