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

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

必考知識(shí)點(diǎn):Java代理模式面試題

更新時(shí)間:2023-01-29 15:28:50 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2242次

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

優(yōu)點(diǎn)

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

代理對(duì)象作為客戶端和目標(biāo)對(duì)象之間的中介,起到了保護(hù)目標(biāo)對(duì)象的作用

缺點(diǎn)

由于在客戶端和真實(shí)主題之間增加了代理對(duì)象,因此會(huì)造成請(qǐng)求的處理速度變慢;

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

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

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

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

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

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

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

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

2)通過(guò)Java 反射機(jī)制的method.invoke(),通過(guò)調(diào)用動(dòng)態(tài)代理類對(duì)象方法,從而自動(dòng)調(diào)用目標(biāo)對(duì)象的方法。

008動(dòng)態(tài)代理的優(yōu)點(diǎn)和缺點(diǎn)?

優(yōu)點(diǎn)

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

2)更強(qiáng)的靈活性;

缺點(diǎn)

1)效率低:相比靜態(tài)代理中直接調(diào)用目標(biāo)對(duì)象方法,動(dòng)態(tài)代理則需要先通過(guò)Java反射機(jī)制 從而間接調(diào)用目標(biāo)對(duì)象方法。

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

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

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

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

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

目標(biāo)方法的調(diào)用

功能增強(qiáng)

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

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;
    }
}

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

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 香港三级日本三级三级人妇99 | 妞干网在线观看 | 日韩欧美亚洲综合久久99e | 两个人看的www高清免费视频 | 97国产免费全部免费观看 | 久久精品99视频 | 日本www色视频成人免费网站 | 国产一区二区三区四卡 | 色视频观看 | 99riav国产精品 | 亚洲综合日韩在线亚洲欧美专区 | 亚洲成a人片 | 涩涩漫画免费入口 | 国产亚洲精品高清在线 | 深夜在线视频免费网址 | 99福利| 欧美黄色三级视频 | 拔擦拔擦8x华人免费久久 | 国产精品麻豆一区二区三区v视界 | 性free中国美女hd| 日本黄色影院在线观看 | 天天综合网天天综合色 | 婷婷激情五月网 | 视频一区亚洲 | 美女视频黄的免费视频网页 | 亚洲综合一区二区三区四区 | 成人一级黄色毛片 | 日韩视频一区二区在线观看 | 手机毛片在线 | 97免费在线 | 妞干网免费在线观看 | 亚洲毛片网 | 日韩欧美亚洲另类 | 九九视频热 | 午夜色a大片在线观看免费 午夜视 | 欧美xxxhd18| 人人草人人澡 | 国产免费拔擦拔擦8x在线 | 日本三级精品 | 黄色网址视频在线播放 | 国产欧美精品一区二区三区 |