国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

設計模式---代理模式

2019-11-14 23:30:21
字體:
來源:轉載
供稿:網(wǎng)友
設計模式---代理模式什么是代理模式?組成:抽象角色:通過接口或抽象類聲明真實角色實現(xiàn)的業(yè)務方法。代理角色:實現(xiàn)抽象角色,是真實角色的代理,通過真實角色的業(yè)務邏輯方法來實現(xiàn)抽象方法,并可以附加自己的操作。真實角色:實現(xiàn)抽象角色,定義真實角色所要實現(xiàn)的業(yè)務邏輯,供代理角色調(diào)用。代理模式的定義:為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。以水滸中的案列講解:比如西門慶找潘金蓮,那潘金蓮不好意思答復呀,咋辦,找那個王婆做代理,表現(xiàn)在程序上時這樣的:先定義一種類型的女人:
package com.oumyye.代理模式;/*** @author oumyye* 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.oumyye.代理模式;public class PanJinLian implements KindWomen {public void happyWithMan() { System. out.再定一個丑陋的王婆:
package com.oumyye.代理模式;public class WangPo implements KindWomen {private KindWomen kindWomen;public WangPo(){ //默認的話,是潘金蓮的代理 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.oumyye.代理模式;public class XiMenQing {/* * 水滸里是這樣寫的:西門慶被潘金蓮用竹竿敲了一下難道,癡迷了, * 被王婆看到了, 就開始撮合兩人好事,王婆作為潘金蓮的代理人 * 收了不少好處費,那我們假設一下: * 如果沒有王婆在中間牽線,這兩個不要臉的能成嗎?難說的很! */public static void main(String[] args) { //把王婆叫出來 WangPo wangPo = new WangPo(); //然后西門慶就說,我要和潘金蓮happy,然后王婆就安排了西門慶丟筷子的那出戲: wangPo.makeEyesWithMan(); //看到?jīng)],雖然表面上時王婆在做,實際上爽的是潘金蓮 wangPo.happyWithMan(); }}

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

package com.oumyye.代理模式;public class JiaShi implements KindWomen {public void happyWithMan() { System. out.println(" 賈氏正在Happy中......"); }public void makeEyesWithMan() { System. out.println(" 賈氏拋媚眼"); }}

西門慶勾賈氏:

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

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 白银市| 衡山县| 辽阳县| 桐庐县| 勃利县| 黎平县| 临高县| 邵东县| 苍南县| 太仆寺旗| 三台县| 墨竹工卡县| 渑池县| 天台县| 尖扎县| 莱阳市| 敖汉旗| 岳阳市| 万山特区| 和平区| 桑植县| 平安县| 秦皇岛市| 田东县| 道孚县| 崇仁县| 巩义市| 诏安县| 彭泽县| 镇赉县| 观塘区| 台东县| 莫力| 绥阳县| 河东区| 平南县| 龙井市| 洪江市| 福州市| 南召县| 临朐县|