亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CGLIB怎么實現代理設計模式

發布時間:2021-08-12 11:04:47 來源:億速云 閱讀:123 作者:chen 欄目:編程語言

本篇內容主要講解“CGLIB怎么實現代理設計模式”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“CGLIB怎么實現代理設計模式”吧!

CGLIB實現代理設計模式

從Java的官方來講,已經明確的要求了如果想要實現代理設計模式,那么一定是基于接口的應用,所以在官方給出的Proxy類創建代理對象時,都需要傳遞該對象所有的接口信息:

Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(),this);

但是這個時候有一部分開發者就認為不應該強迫性的基于接口實現代理設計,所以一部分開發者就開發出了一個CGLIB開發包,利用這個開發包就可以實現基于類的代理設計模式。
1、CGLIB是一個第三方的程序包,需要單獨在Eclipse中進行配置,程序包的路徑為:D:jar-libcglib-nodep-3.2.6.jar,那么需要打開Eclipse項目屬性安裝第三方開發包;
CGLIB怎么實現代理設計模式

2、編寫程序類,該類不實現任何接口。

class Message  {public void send() {
        System.out.println("【發送消息】www.mldn.cn");
    }
}

3、利用CGLIB編寫代理類,但是這個代理類需要做一個明確,此時相當于使用了類的形式實現了代理設計的處理,所以該代理設計需要通過CGLIB來生成代理對象,定義一個代理類:

class MLDNProxy implements MethodInterceptor{  //攔截器配置private Object target;  //保存真實主題對象public MLDNProxy(Object target){this.target = target;
    }@Overridepublic Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
        Object returnData = null;if(this.connect()){
            returnData = method.invoke(this.target,args);this.close();
        }return returnData ;
    }public boolean connect(){
        System.out.println("【消息代理】進行消息發送通道的連接。");return true;
    }public void close(){
        System.out.println("【消息代理】關閉消息通道。");
    }
}

4、此時如果想創建代理類對象,則就必須進行一系列的CGLIB處理。

public class JavaAPIDemo {public static void main(String[] args)throws Exception{
        Message realObject = new Message();   //真實主體對象Enhancer enhancer=new Enhancer();  //負責代理操作的程序類enhancer.setSuperclass(realObject.getClass());  //假定一個父類enhancer.setCallback(new MLDNProxy(realObject));  //設置代理類Message proxyObject= (Message) enhancer.create();  //創建代理對象proxyObject.send();
    }
}

在進行代理設計模式定義的時候,除了使用可以接口之外,還可以不受接口限制而實現基于類的代理設計,但從正常的設計角度來講,強烈建議還是基于接口的設計會比較合理。

到此,相信大家對“CGLIB怎么實現代理設計模式”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂托克旗| 当雄县| 临澧县| 常宁市| 宜兰县| 瑞昌市| 同江市| 公主岭市| 修武县| 尼勒克县| 辽源市| 望江县| 安福县| 巴彦淖尔市| 苗栗县| 衡山县| 宿迁市| 云霄县| 九江市| 墨江| 井冈山市| 吐鲁番市| 万盛区| 高安市| 扎囊县| 塔城市| 秦皇岛市| 松滋市| 赤壁市| 确山县| 自治县| 阿图什市| 永寿县| 洱源县| 美姑县| 永仁县| 丹寨县| 福鼎市| 鄂温| 海盐县| 思南县|