java之JDK動態(tài)代理實例分析

本篇內(nèi)容主要講解“java之JDK動態(tài)代理實例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java之JDK動態(tài)代理實例分析”吧!

在烏海海南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、做網(wǎng)站 網(wǎng)站設(shè)計制作按需策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,網(wǎng)絡(luò)營銷推廣,外貿(mào)網(wǎng)站制作,烏海海南網(wǎng)站建設(shè)費用合理。

1、說明

Java中提供了一個動態(tài)代理類 Proxy,Proxy 并不是我們所說的代理對象的類,而是提供了一個創(chuàng)建代理對象的靜態(tài)方法(newProxyInstance)來獲取代理對象。

2、實例

public class HelloWorld {
    public static void main(String[] args) {
        // 獲取代理對象
        ProxyFactory factory = new ProxyFactory();
        
        SellTickets proxyObject = factory.getProxyObject();
        
        proxyObject.sell();
    }
}
 
// 賣票接口
interface SellTickets {
    void sell();
}
 
// 火車站,火車站具有賣票功能,所以需要實現(xiàn)SellTickets接口
class TrainStation implements SellTickets {
    @Override
    public void sell() {
        System.out.println("火車站賣票");
    }
}
 
// 代理工廠,用來創(chuàng)建代理對象
class ProxyFactory {
    private TrainStation station = new TrainStation();
 
    public SellTickets getProxyObject() {
        // 使用Proxy獲取代理對象
 
        /**
         * newProxyInstance() 方法參數(shù)說明:
         *  ClassLoader loader: 類加載器,用于加載代理類,使用真實對象的類加載器即可
         *  Class<?>[] interfaces:真實對象所實現(xiàn)的接口,代理模式真實對象和代理對象實現(xiàn)相同的接口
         *  InvocationHandler h:代理對象的調(diào)用處理程序
         */
 
        SellTickets sellTickets = (SellTickets) Proxy.newProxyInstance(
                station.getClass().getClassLoader(),
                new InvocationHandler() {
                    /**
                     * InvocationHandle中invoke方法參數(shù)說明:
                     *  proxy:代理對象
                     *  method:對應(yīng)于在代理對象上調(diào)用的方法的Method實例
                     *  args:代理對象調(diào)用接口方法是傳遞的實際參數(shù)
                     */
                    
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        System.out.println("代理點收取一些服務(wù)費用(JDK動態(tài)代理方法)");
                        
                        // 執(zhí)行真實對象
                        Object result = method.invoke(station, args);
                        return result;
                    }
                });
        return sellTickets;
    }
}

到此,相信大家對“java之JDK動態(tài)代理實例分析”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

標題名稱:java之JDK動態(tài)代理實例分析
轉(zhuǎn)載來于:http://muchs.cn/article14/ghecde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、微信小程序、網(wǎng)站制作動態(tài)網(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)

成都網(wǎng)站建設(shè)