javascript
Spring学习8之静态代理
一、靜態(tài)代理是什么?
代理模式是常用的Java設(shè)計(jì)模式,它的特征是代理類與委托類有同樣的接口,代理類主要負(fù)責(zé)為委托類預(yù)處理消息、過(guò)濾消息、把消息轉(zhuǎn)發(fā)給委托類,以及事后處理消息等。代理類與委托類之間通常會(huì)存在關(guān)聯(lián)關(guān)系,一個(gè)代理類的對(duì)象與一個(gè)委托類的對(duì)象關(guān)聯(lián),代理類的對(duì)象本身并不真正實(shí)現(xiàn)服務(wù),而是通過(guò)調(diào)用委托類的對(duì)象的相關(guān)方法,來(lái)提供特定的服務(wù)。
靜態(tài)代理類:由程序員創(chuàng)建生成源代碼,再對(duì)其編譯,即創(chuàng)建一個(gè)代理類。在程序運(yùn)行前,代理類就已經(jīng)存在了。
二、使用步驟
代碼步驟:
1.接口
⒉真實(shí)角色
3.代理角色
4.客戶端訪問(wèn)代理角色
下面以租房為例子:
1.需要的類
房東需要出租房子,房東的類
package com.shan.demo01;public class Host implements Rent{public void rent(){System.out.println("房東要出租房子!");}}客戶需要租房子,客戶的類
客戶找代理租房子,客戶和代理交接
代理人需要和兩邊同時(shí)交接,代理的類
package com.shan.demo01;public class Proxy implements Rent{private Host host;public Proxy() {}public Proxy(Host host) {this.host = host;}@Overridepublic void rent() {host.rent();seeHouse();this.fare();this.hetong();}//看房public void seeHouse(){System.out.println("代理帶你看房");}//收中介費(fèi)public void fare(){System.out.println("收中介費(fèi)");}//簽租賃合同public void hetong(){System.out.println("簽租賃合同");}}共同的接口,租房的方法
package com.shan.demo01;public interface Rent {//租房public void rent();}2.解析
客戶想要租房子,房東想要出租房子,可是客戶不容易找到房東,于是客戶找到了中介(代理類),中介幫房東出租房子,中介把房子出租給客戶,中介還可以干自己的事情,不會(huì)影響到業(yè)務(wù)。
最終客戶只要找到代理類,去調(diào)用代理的方法就能完成租房子,而不需要直接面向房東!并且代理類能有他自己的事情(代理收中介費(fèi)等等);不會(huì)影響業(yè)務(wù)!
這就是代理的作用!
總結(jié)
優(yōu)點(diǎn)
- 可以使真實(shí)角色的操作更加純粹!不用去關(guān)注一些公共的業(yè)務(wù)
- 公共業(yè)務(wù)交給了代理,實(shí)現(xiàn)了業(yè)務(wù)的分工
- 公共業(yè)務(wù)發(fā)生拓展時(shí),方便集中管理
缺點(diǎn):
- 一個(gè)真實(shí)的角色就會(huì)產(chǎn)生一個(gè)代理,代碼量翻倍,開(kāi)發(fā)效率降低
作者有話說(shuō)
博客創(chuàng)作不易,希望看到這里的讀者動(dòng)動(dòng)你的小手點(diǎn)個(gè)贊,如果喜歡的小伙伴可以一鍵三連,作者大大在這里給大家謝謝了。
總結(jié)
以上是生活随笔為你收集整理的Spring学习8之静态代理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring学习7之自动装配Bean03
- 下一篇: Spring学习9之静态代理再理解