代理模式及實現

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採用非常底層的字節碼技術,可以爲一個類創建子類,解決無接口代理問題


動態代理和靜態代理區別??

解析:靜態代理需要手工編寫代理類,代理類引用被代理對象。

        動態代理是在內存中構建的,不需要手動編寫代理類

代理的目的:是爲了在原有的方法上進行增強。

Spring AOP淺析(一):代理模式及實現

設計模式(1)--理解AOP(代理模式)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章