日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(二)代理模式

發(fā)布時間:2025/7/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (二)代理模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是代理模式呢?我很忙,忙的沒空理你,那你要找我呢就先找我的代理人吧,那代理人總要知道
被代理人能做哪些事情不能做哪些事情吧,那就是兩個人具備同一個接口,代理人雖然不能干活,但是被
代理的人能干活呀。?
比如西門慶找潘金蓮,那潘金蓮不好意思答復(fù)呀,咋辦,找那個王婆做代理,表現(xiàn)在程序上時這樣的: ?
先定義一種類型的女人:?
?
package com.cbf4life.proxy;?
?
/**?
?* @author cbf4Life cbf4life@126.com?
?* I'm glad to share my knowledge with you all.?
?* 定義一種類型的女人,王婆和潘金蓮都屬于這個類型的女人?
?*/?
public interface KindWomen {?
??
? //這種類型的女人能做什么事情呢??
? public void makeEyesWithMan(); ?//拋媚眼?
??
? public void happyWithMan(); ?//happy what? You know that!?
??
}?


一種類型嘛,那肯定是接口,然后定義潘金蓮:?


package com.cbf4life.proxy;?
?
/**?
?* @author cbf4Life cbf4life@126.com?
?* I'm glad to share my knowledge with you all.?
?* 定一個潘金蓮是什么樣的人?
?*/?
public class PanJinLian implements KindWomen {?
?
? public void happyWithMan() {?
? System.out.println("潘金蓮在和男人做那個.....");?
? ?}?
?
? public void makeEyesWithMan() {?
??System.out.println("潘金蓮拋媚眼");?
? ?}?
?
}?


再定一個丑陋的王婆:?


package com.cbf4life.proxy;?
?
/**?
?* @author cbf4Life cbf4life@126.com?
?* I'm glad to share my knowledge with you all.?
?* 王婆這個人老聰明了,她太老了,是個男人都看不上,
?* 但是她有智慧有經(jīng)驗呀,她作為一類女人的代理!?

?*/?

?

public class WangPo implements KindWomen {?

?

? private KindWomen kindWomen;?
??
? public WangPo(){ //默認(rèn)的話,是潘金蓮的代理?
? ?this.kindWomen = new PanJinLian();?

?}

?

? //她可以是KindWomen的任何一個女人的代理,只要你是這一類型?

? public WangPo(KindWomen kindWomen){?

?

? ?this.kindWomen = kindWomen;?

?}?

?

? public void happyWithMan() {?
? ?this.kindWomen.happyWithMan(); ?//自己老了,干不了,可以讓年輕的代替?

?}?

?

? public void makeEyesWithMan() {?
? ?this.kindWomen.makeEyesWithMan(); ?//王婆這么大年齡了,誰看她拋媚眼?!?
?}?
?
}?


兩個女主角都上場了,男主角也該出現(xiàn)了:?
package com.cbf4life.proxy;?
?
/**?
?* @author cbf4Life cbf4life@126.com?
?* I'm glad to share my knowledge with you all.?
?* 定義一個西門慶,這人色中餓鬼?
?*/?
public class XiMenQing {?
??
? /*?
? ?* 水滸里是這樣寫的:西門慶被潘金蓮用竹竿敲了一下難道,癡迷了,?
? ?* 被王婆看到了, ?就開始撮合兩人好事,王婆作為潘金蓮的代理人?
? ?* 收了不少好處費,那我們假設(shè)一下:?
? ?* 如果沒有王婆在中間牽線,這兩個不要臉的能成嗎?難說的很!?
? ?*/?
public static void main(String[] args) {?
? ? //把王婆叫出來?
? ? WangPo wangPo = new WangPo();?
? ?
??//然后西門慶就說,我要和潘金蓮happy,然后王婆就安排了西門慶丟筷子的那出戲:?
? wangPo.makeEyesWithMan(); ? //看到?jīng)],雖然表面上時王婆在做,實際上爽的是潘金蓮?
? wangPo.happyWithMan();
}?
}?


那這就是活生生的一個例子,通過代理人實現(xiàn)了某種目的,如果真去掉王婆這個中間環(huán)節(jié),直接是西門慶和潘金蓮勾搭,估計很難成就武松殺嫂事件。?
那我們再考慮一下,水滸里還有沒有這類型的女人?有,盧俊義的老婆賈氏(就是和那個固管家茍合的那個) ,這名字起的: “假使” ,那我們也讓王婆做她的代理:?
把賈氏素描出來:?

package com.cbf4life.proxy;?
?
/**?
?* @author cbf4Life cbf4life@126.com?
?* I'm glad to share my knowledge with you all.?
?*/?
public class JiaShi implements KindWomen {?
?
? public void happyWithMan() {?
? System.out.println("賈氏正在Happy中......");?
}?
?
? public void makeEyesWithMan() {?
? System.out.println("賈氏拋媚眼");?
?
?}?
?
}?


西門慶勾賈氏:


package com.cbf4life.proxy;?
?
/**?
?* @author cbf4Life cbf4life@126.com?
?* I'm glad to share my knowledge with you all.?
?* 定義一個西門慶,這人色中餓鬼?
?*/?


public class XiMenQing {?
??
? public static void main(String[] args) {?
? ?//改編一下歷史,賈氏被西門慶勾走:?
? ? JiaShi jiaShi = new JiaShi();?
? ? WangPo wangPo = new WangPo(jiaShi); //讓王婆作為賈氏的代理人?
? ?
? wangPo.makeEyesWithMan();?
? wangPo.happyWithMan(); ? ?
?}?
}?


說完這個故事,那額總結(jié)一下,代理模式主要使用了 Java的多態(tài),干活的是被代理類,代理類主要是接活,你讓我干活,好,我交給幕后的類去干,你滿意就成,那怎么知道被代理類能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚的很,同一個接口唄。?

轉(zhuǎn)載于:https://www.cnblogs.com/wvqusrtg/p/4812965.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的(二)代理模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。