大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注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) 瀏覽2238次

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ù)一種類(lèi)型的目標(biāo)對(duì)象,若要服務(wù)多類(lèi)型的目標(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í)行功能操作。

代理類(lèi)在程序運(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ì)象類(lèi)(RealSubject)相同的接口,而是將這種實(shí)現(xiàn)推遲到程序運(yùn)行時(shí)由 JVM來(lái)實(shí)現(xiàn)。即:在使用時(shí)再創(chuàng)建動(dòng)態(tài)代理類(lèi) & 實(shí)例;

2)通過(guò)Java 反射機(jī)制的method.invoke(),通過(guò)調(diào)用動(dòng)態(tài)代理類(lè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)代理類(lè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è)代理類(lèi)都繼承了 Proxy 類(lèi)),即只能針對(duì)接口創(chuàng)建代理類(lèi),不能針對(duì)類(lèi)創(chuàng)建代理類(lèi)。

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

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

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

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

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

功能增強(qiáng)

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

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í)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美一级成人 | 手机看片福利日韩欧美看片 | 印度老妇bbwfreexxx| 久久久这里只有精品加勒比 | 国内精品久久久久影院亚洲 | 久久国产精品久久久久久 | 欧美日韩亚洲一区 | 久久国产精品国语对白 | 精品国产调教最大网站女王 | 国产成人一区二区三区影院免费 | 99热精品久久只有精品30 | 日韩伦理亚洲欧美在线一区 | 国产一区二区日韩欧美在线 | 国产精品久久久久久久久福利 | 公主恋人在线观看 | 国产高清看片日韩欧美久久 | 天天艹夜夜艹 | 寂寞午夜影院 | 玖玖草视频 | 久久精品视频在线播放 | 久久精品国产午夜伦班片 | chinese国产在线视频 | 久久精品国产一区二区三区不卡 | 第一福利在线视频 | 日韩伦理一区二区 | 精品一区二区视频 | 国产观看精品一区二区三区 | 特黄特级高清免费视频毛片 | 国产欧美日韩一区 | 一级免费看 | 国产剧情自拍 | 亚洲精品二区中文字幕 | 69视频在线观看福利视频 | 日韩中文字幕网 | 欧美激情一区二区三区视频 | 玖玖中文字幕 | 久久99热久久精品91 | 热久久视久久精品18国产 | 天天曰夜夜操 | 亚洲日日操 | 久久激情综合色丁香 |