Java代理系列-静态代理
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
代理模式可以做很多事,像hibernate,spring都使用了代理模式。
spring的aop就是用代理做的。
本系列分為4章,靜態(tài)代理,動(dòng)態(tài)代理熱身,動(dòng)態(tài)代理,cglib代理
今天先寫一寫靜態(tài)代理
本例目的是在要調(diào)用的方法前后輸出start和end,會(huì)使用四個(gè)類
接口HelloInterface
接口實(shí)現(xiàn)類HelloInterfaceImpl
靜態(tài)代理類HelloStaticProxy
測(cè)試類HelloTest
首先寫一個(gè)接口HelloInterface,定義一個(gè)say方法
package?net.hldh.river.staticproxy;/***?Created?by?liuhj?on?2015/12/1.*/ public?interface?HelloInterface?{public?void?say(); }實(shí)現(xiàn)接口HelloInterfaceImpl,打印Hello
package?net.hldh.river.staticproxy;/***?Created?by?liuhj?on?2015/12/1.*/ public?class?HelloInterfaceImpl?implements?HelloInterface?{@Overridepublic?void?say()?{System.out.println("Hello");} }代理類HelloStaticProxy實(shí)現(xiàn),在代理的方法內(nèi)加前后環(huán)繞,是不是很像AOP
package?net.hldh.river.staticproxy;/***?Created?by?liuhj?on?2015/12/1.*/ public?class?HelloStaticProxy{//spring?依賴注入?類似吧private?HelloInterface?helloInterface;public?HelloStaticProxy(HelloInterface?helloInterface){this.helloInterface?=?helloInterface;}public?void?say_proxy(){System.out.println("start");helloInterface.say();System.out.println("end");} }編寫測(cè)試類HelloTest
package?net.hldh.river.staticproxy;/***?Created?by?liuhj?on?2015/12/1.*/ public?class?HelloTest?{public?static?void?main(String?args[]){HelloStaticProxy?proxy?=?new?HelloStaticProxy(new?HelloInterfaceImpl());proxy.say_proxy();} }輸出結(jié)果
start Hello end靜態(tài)代理呢,使用的不是太多,主要是當(dāng)你要修改接口或者其他方法時(shí)要修改代理類實(shí)現(xiàn)類等好多方法,好麻煩
下一章主要寫寫動(dòng)態(tài)代理前需要知道的知識(shí)
才疏學(xué)淺,如有錯(cuò)誤敬請(qǐng)指出,謝謝。
轉(zhuǎn)載于:https://my.oschina.net/u/2519530/blog/538081
總結(jié)
以上是生活随笔為你收集整理的Java代理系列-静态代理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php5.3 延迟静态绑定 static
- 下一篇: java美元兑换,(Java实现) 美元