欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

JAVA設(shè)計(jì)模式---代理模式(靜態(tài))

系統(tǒng) 2446 0

代理模式是由GoF提出的23種軟件設(shè)計(jì)模式的一種。其定義為:為其他對象提供一種代理以控制對這個(gè)對象的訪問。別名:Surrogate。
所謂代理,是指具有與代理元(被代理的對象)具有相同的接口的類,客戶端必須通過代理與被代理的目標(biāo)類交互,而代理一般在交互的過程中(交互前后),進(jìn)行某些特別的處理。Proxy模式是很常見的模式,在我們生活中處處可見,例如我們買火車票不一定非要到火車站去買,可以到一些火車票的代售點(diǎn)去買。寄信不一定是自己去寄,可以把信委托給郵局,由郵局把信送到目的地。

代理結(jié)構(gòu)如下圖所示

Java 代理/動態(tài)代理模式(Proxy) - stevinzhu - stevinzhu的博客

以通過代售點(diǎn)買火車票為例,代碼實(shí)現(xiàn)如下:

//提供買票的公共接口
interface Passenger {
public void buyTicket();
}

//乘客實(shí)體
public class RealPassenger implements Passenger {
@Override
public void buyTicket() {
?? // TODO Auto-generated method stub
?? System.out.print("購買了火車票");
}
}

//代售點(diǎn)
public class Proxy implements Passenger {
Passenger passenger;

public Proxy(Passenger p) {
?? this.passenger = p;
}

@Override
public void buyTicket() {
?? // TODO Auto-generated method stub
?? System.out.println("通過代售點(diǎn)");
?? passenger.buyTicket();
}
}

//測試類
public class Client {
public static void main(String[] args) {
?? Passenger passenger = new RealPassenger();
?? Passenger proxy = new Proxy(passenger);
?? proxy.buyTicket();
}
}

輸出結(jié)果:
通過代售點(diǎn)
購買了火車票

以上的也可叫做靜態(tài)代理,是為了區(qū)別代理模式在Java中的另一種實(shí)現(xiàn)——動態(tài)代理。動態(tài)代理的應(yīng)用十分廣泛,在struts2的攔截器中就用到了動態(tài)代理機(jī)制。還是以買車票為例子,現(xiàn)在用動態(tài)代理來實(shí)現(xiàn),其中不懂的接口方法查查Java api就會明白了,在此不多做解釋,代碼如下(注意PassengerProxy類):

import java.lang.reflect.*;

public interface Passenger {
public void buyTicket();
}

public class RealPassenger implements Passenger {

@Override
public void buyTicket() {
?? // TODO Auto-generated method stub
?? System.out.println("購買了車票");
}
}

// 用動態(tài)代理實(shí)現(xiàn)
public class PassengerProxy implements InvocationHandler {
public Object obj;

// 把obj交給代理類
public Object obj(Object obj) {
?? this.obj = obj;
?? return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj
???? .getClass().getInterfaces(), this);
}

@Override
public Object invoke(Object proxy, Method method, Object[] args)
??? throws Throwable {
?? // TODO Auto-generated method stub
?? System.out.println("通過代理");
?? method.invoke(obj, args);
?? return null;
}
}

public class Client {
public static void main(String[] args) {
?? PassengerProxy proxy = new PassengerProxy();
?? Passenger passenger = (Passenger) proxy.obj(new RealPassenger());
?? passenger.buyTicket();
}
}

JAVA設(shè)計(jì)模式---代理模式(靜態(tài))


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人在线激情网 | 男进女内免费视频无遮挡 | 亚洲在成人网在线看 | 亚洲国产午夜电影在线入口 | 夜夜天堂| 亚洲综合区 | 男女超猛烈啪啦啦的免费视频 | 欧美影院推理片免费看 | 成人免费在线视频网站 | 欧美日韩在线一区二区 | 天天色av | 久久99精品国产99久久 | a级粗大硬长爽猛视频免费 潘金莲强完整版 | 日本捏胸摸下面免费视频 | 久操久操 | 久草色视频 | 欧美日韩精品久久久免费观看 | 爱爱视频在线观看 | 一级做受毛片免费大片 | 亚洲射吧| 91麻豆精品一二三区在线 | 国产精品久久久久无码av | 一级片视频免费观看 | 亚洲 欧美 日韩在线 | 草草视频在线观看 | 色妇影院 | 色综合网亚洲精品久久久 | 尤物视频在线观看 | 激情综合婷婷久久 | 亚洲欧美日韩中文字幕在线不卡 | 久久久久久99 | 日本黄页免费大片在线观看 | 欧洲视频在线观看 | 成人免费一级毛片在线播放视频 | 欧美精品无需播放器在线观看 | 欧美一区二 | 很黄很暴力深夜爽爽无遮挡 | 色综合视频在线 | 日韩图区| 久久久久久久久久综合情日本 | 日韩欧美二区 |