代理模式相信大家都聽說過,在代碼實(shí)現(xiàn)角度來講分靜態(tài)代理和動(dòng)態(tài)代理。平時(shí)在講解代理模式時(shí),大家用的例子都是用靜態(tài)代理。不過呢,用靜態(tài)代理來做例子能夠更加清晰的表達(dá)出代理模式的精髓。
靜態(tài)代理,從字面理解就是預(yù)先已經(jīng)寫好了代理。而動(dòng)態(tài)代理是在運(yùn)行時(shí)動(dòng)態(tài)生成的,這種方式更加靈活?,F(xiàn)在很多框架都用到了動(dòng)態(tài)代理,比如Retrofit2,還有很多插件化的框架。下面我們就講解下通過jdk來實(shí)現(xiàn)動(dòng)態(tài)代理的功能。
首先創(chuàng)建一個(gè)接口,然后再創(chuàng)建一個(gè)實(shí)現(xiàn)類,如下:


下面我們就要通過jdk的代理來實(shí)現(xiàn)對(duì)MyCar對(duì)象的代理,通過代理來修改對(duì)象的函數(shù)執(zhí)行邏輯:


最后執(zhí)行的結(jié)果
