第十四天

1.jdk動態(tài)代理必須有接口

查看jdk的動態(tài)代理源碼發(fā)現(xiàn):

動態(tài)代理實際上是程序在運行中,根據(jù)被代理的接口來動態(tài)生成代理類的class文件,并加載class文件運行的過程,通過反編譯被生成的$Proxy0.class文件發(fā)現(xiàn):

? ? class類定義為:

public final class $Proxy0extendsProxyimplementsInterface {

public?$Proxy0(InvocationHandler?paramInvocationHandler)?{??

????????????super(paramInvocationHandler);??

??????????}?

????????...

...

????????// 該方法為被代理接口的業(yè)務(wù)方法,代理類都會自動生成相應(yīng)的方法,里面去執(zhí)行invocationHandler 的invoke方法。

public?final?voidsayHello(String?paramString)?{

????????????try?{??

?this.h.invoke(this,?m3,?new?Object[]?{?paramString?});??

????????????????return;??

????????????}??

????????????catch?(Error|RuntimeException?localError)?{??

????????????????throw?localError;??

? ? ? ? ? ? }??

????????????catch?(Throwable?localThrowable)?{??

????????????????throw?new?UndeclaredThrowableException(localThrowable);??

????????????}??

??????}?

????}

? ? 由于java的單繼承,動態(tài)生成的代理類已經(jīng)繼承了Proxy類的,就不能再繼承其他的類,所以只能靠實現(xiàn)被代理類的接口的形式,故JDK的動態(tài)代理必須有接口。

2.什么是解耦合什么是耦合

是指兩個或兩個以上的體系或兩種運動形式間通過相互作用而彼此影響以至聯(lián)合起來的現(xiàn)象。

解耦就是用數(shù)學(xué)方法將兩種運動分離開來處理問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容