CGLIB怎么實現(xiàn)代理設(shè)計模式

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

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供丹東網(wǎng)站建設(shè)、丹東做網(wǎng)站、丹東網(wǎng)站設(shè)計、丹東網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、丹東企業(yè)網(wǎng)站模板建站服務(wù),十載丹東做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

CGLIB實現(xiàn)代理設(shè)計模式

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

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

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

2、編寫程序類,該類不實現(xiàn)任何接口。

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

3、利用CGLIB編寫代理類,但是這個代理類需要做一個明確,此時相當(dāng)于使用了類的形式實現(xiàn)了代理設(shè)計的處理,所以該代理設(shè)計需要通過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("【消息代理】進行消息發(fā)送通道的連接。");return true;
    }public void close(){
        System.out.println("【消息代理】關(guān)閉消息通道。");
    }
}

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

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

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

到此,相信大家對“CGLIB怎么實現(xiàn)代理設(shè)計模式”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

新聞標(biāo)題:CGLIB怎么實現(xiàn)代理設(shè)計模式
URL標(biāo)題:http://bm7419.com/article36/gegpsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、外貿(mào)網(wǎng)站建設(shè)移動網(wǎng)站建設(shè)、微信公眾號商城網(wǎng)站、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化