黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 職業(yè)指南 必考知識點:Java代理模式面試題

必考知識點:Java代理模式面試題

更新時間:2023-01-29 15:28:50 來源:動力節(jié)點 瀏覽2244次

1.代理模式的優(yōu)缺點?

優(yōu)點

協(xié)調調用者和被調用者,降低了系統(tǒng)的耦合度

代理對象作為客戶端和目標對象之間的中介,起到了保護目標對象的作用

缺點

由于在客戶端和真實主題之間增加了代理對象,因此會造成請求的處理速度變慢;

實現(xiàn)代理模式需要額外的工作(有些代理模式的實現(xiàn)非常復雜),從而增加了系統(tǒng)實現(xiàn)的復雜度。

2.為什么要使用動態(tài)代理?

在靜態(tài)代理模式中一個靜態(tài)代理只服務一種類型的目標對象,若要服務多類型的目標對象,則需要為每種目標對象都實現(xiàn)一個靜態(tài)代理對象。在目標對象較多的情況下,若采用靜態(tài)代理,則會出現(xiàn) 靜態(tài)代理對象量多、代碼量大,從而導致代碼復雜的問題。

3.什么是動態(tài)代理?

動態(tài)代理就是,在程序運行期,創(chuàng)建目標對象的代理對象,并對目標對象中的方法進行功能性增強的一種技術。在生成代理對象的過程中,目標對象不變,代理對象中的方法是目標對象方法的增強方法。可以理解為運行期間,對象中方法的動態(tài)攔截,在攔截方法的前后執(zhí)行功能操作。

代理類在程序運行期間,創(chuàng)建的代理對象稱之為動態(tài)代理對象。這種情況下,創(chuàng)建的代理對象,并不是事先在Java代碼中定義好的。而是在運行期間,根據(jù)我們在動態(tài)代理對象中的“指示”,動態(tài)生成的。也就是說,你想獲取哪個對象的代理,動態(tài)代理就會為你動態(tài)的生成這個對象的代理對象。動態(tài)代理可以對被代理對象的方法進行功能增強。有了動態(tài)代理的技術,那么就可以在不修改方法源碼的情況下,增強被代理對象的方法的功能,在方法執(zhí)行前后做任何你想做的事情。

4.動態(tài)代理模式的原理?

1)動態(tài)代理不需要顯式實現(xiàn)與目標對象類(RealSubject)相同的接口,而是將這種實現(xiàn)推遲到程序運行時由 JVM來實現(xiàn)。即:在使用時再創(chuàng)建動態(tài)代理類 & 實例;

2)通過Java 反射機制的method.invoke(),通過調用動態(tài)代理類對象方法,從而自動調用目標對象的方法。

008動態(tài)代理的優(yōu)點和缺點?

優(yōu)點

1)只需要1個動態(tài)代理類就可以解決創(chuàng)建多個靜態(tài)代理的問題,避免重復、多余代碼;

2)更強的靈活性;

缺點

1)效率低:相比靜態(tài)代理中直接調用目標對象方法,動態(tài)代理則需要先通過Java反射機制 從而間接調用目標對象方法。

2)應用場景局限:Java 的單繼承特性(每個代理類都繼承了 Proxy 類),即只能針對接口創(chuàng)建代理類,不能針對類創(chuàng)建代理類。

5.JDK動態(tài)代理的實現(xiàn)步驟?

1.創(chuàng)建接口,定義目標類需要完成的功能

2.創(chuàng)建目標類,實現(xiàn)接口。

3.創(chuàng)建InvocationHandler接口的實現(xiàn)類。在invoke方法中完成代理類的功能。

目標方法的調用

功能增強

4.使用Proxy類中靜態(tài)方法Proxy.newProxyInstance完成代理類對象的創(chuàng)建,返回代理對象,并把返回值轉為接口類型。

public class JDKDynamicProxy {
    public static void main(String[] args) {
        CAProxy caProxy = new CAProxy();
        IA instance = (IA) caProxy.getInstance(new CA());
        instance.say();
        instance.fly();
    }
}
interface IA{
    void say();
    void fly();
}
class CA implements IA{
    @Override
    public void say() {
        System.out.println("I am class CA");
    }
    @Override
    public void fly() {
        System.out.println("I can fly");
    }
}
class CAProxy implements InvocationHandler{
    private Object target;
    public Object getInstance(Object object){
        this.target = object;
        return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("I am proxy!");
        Object result = method.invoke(target, args);
        return result;
    }
}

以上就是“必考知識點:Java代理模式面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內(nèi)容,可以關注動力節(jié)點Java官網(wǎng)。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 99精品视频在线在线视频观看 | 国内黄色片 | 国产一区二区中文字幕 | 亚洲欧美在线免费 | 亚洲美女操 | 成人永久福利免费观看 | 丰满大屁股美女一级毛片 | 日韩欧美综合在线 | 天天摸天天爽天天碰天天弄 | 92精品国产自产在线观看48 | 黄色片a | 日本一区中文字幕 | 久草手机在线 | 欧美三级不卡 | 亚洲国产精品成人综合久久久 | www在线视频在线播放 | 日韩欧美中文在线 | 日本视频网站在线www色 | 一区二区三区四区欧美 | 看美女日批 | a级黄色毛片 | 久久亚洲欧美综合激情一区 | 激情五月激情综合色区 | 东京道区二区三区 | 国产亚洲视频在线播放大全 | eee在线播放成人免费 | 老湿福利影院 | 国产又黄又爽又猛的免费视频播放 | 日韩亚洲人成网站 | 亚洲va中文va欧美va爽爽 | 国产剧情一区二区 | 免费成年人在线视频 | 性欧美videos另类视频 | 日韩中文字幕视频在线 | 免费国产小视频 | 五月丁色 | 欧美亚洲国产精品久久第一页 | 一级毛片高清大全免费观看 | 97福利视频导航欧美一区 | 在线观看精品福利片香蕉 | 在线观看免费精品国产 |