設計模式之(二)---代理模式Proxy Pattern,proxypattern

來源:互聯網
上載者:User

設計模式之(二)---代理模式Proxy Pattern,proxypattern
 什麼是代理模式呢?我很忙,忙的沒空理你,那你要找我呢就先找我的代理人吧,那代理人總要知道
被代理人能做哪些事情不能做哪些事情吧,那就是兩個人具備同一個介面,代理人雖然不能幹活,但是被
代理的人能幹活呀。
比如西門慶找潘金蓮,那潘金蓮不好意思回覆呀,咋辦,找那個王婆做代理,表現在程式上時這樣的:
先定義一種類型的女人(介面):

package com.fc.Proxy;public interface KindWoman {public void makeEyesWithMan(); //拋媚眼}

然後定義潘金蓮:

package com.fc.Proxy;public class PanJinlian implements KindWoman {public void makeEyesWithMan() {System.out.println("潘金蓮在拋媚眼。。。");}}

再來個王婆,也就是潘金蓮的代理人:

package com.fc.Proxy;public class WangPo implements KindWoman {private KindWoman kindwoman;public WangPo() {this. kindwoman = new PanJinlian();//王婆預設是潘金蓮的代理人}//王婆也可以是KindWomen的其他任何一個女人的代理,只要你是這一類型public WangPo(KindWoman kindWomen){ this. kindwoman = kindWomen; }public void makeEyesWithMan() { this. kindwoman.makeEyesWithMan(); //王婆這麼大年齡了,誰看她拋媚眼?!她代替別人拋 }}
連個女豬腳已經登場,下面到西門慶了:

package com.fc.Proxy;public class XiMenQing {public static void main(String[] args) {//把王婆叫出來 WangPo wangPo = new WangPo(); //然後西門慶就說,我要和潘金蓮happy,然後王婆就安排了西門慶丟筷子的那齣戲: wangPo.makeEyesWithMan(); //看到沒,雖然表面上時王婆在做,實際上爽的是潘金蓮}}

好了現在王婆為西門慶代理完了,說不準她還得給別人代理,假設現在又來了個潘金蓮2號:
package com.fc.Proxy;public class PanJinlian222 implements KindWoman {public void makeEyesWithMan() {System.out.println("潘金蓮222在拋媚眼。。。");}}

然後西門慶又來找王婆幫忙勾引潘金蓮2號:修改西門慶:

package com.fc.Proxy;public class XiMenQing {public static void main(String[] args) {/*//把王婆叫出來 WangPo wangPo = new WangPo(); //然後西門慶就說,我要和潘金蓮happy,然後王婆就安排了西門慶丟筷子的那齣戲: wangPo.makeEyesWithMan(); //看到沒,雖然表面上時王婆在做,實際上爽的是潘金蓮*/WangPo wangPo=new WangPo(new PanJinlian222());//這個不是預設代理,要往裡傳個參數wangPo.makeEyesWithMan();}}

說完這個故事,那額總結一下,代理模式主要使用了 Java 的多態,幹活的是被代理類,代理類主要是
接活,你讓我幹活,好,我交給幕後的類去幹,你滿意就成,那怎麼知道被代理類能不能幹呢?同根就成,
大家知根知底,你能做啥,我能做啥都清楚的很,同一個介面唄。

來自:設計模式



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.