代理模式總結

什麼是代理模式呢?
我很忙,忙的沒空理你,那你要找我呢就先找我的代理人吧,那代理人總要知道被代理人能做哪些事情不能做哪些事情吧,那就是兩個人具備同一個接口,代理人雖然不能幹活,但是被代理的人能幹活呀。比如西門慶找潘金蓮,那潘金蓮不好意思答覆呀,咋辦,找那個王婆做代理。

注意:(王婆)代理的人不幹活,(潘金蓮)被代理的人幹活。

public interface Woman {
// 這種女人能幹嘛呢?
// 拋媚眼
public void makeEyeWithMan();
// 和男人happy
public void happyWithMan();
}


public class PanJinLian implements Woman {

@Override
public void makeEyeWithMan() {
System.out.println("潘金蓮向西門慶拋媚眼");

}

@Override
public void happyWithMan() {
System.out.println("潘金蓮和西門慶happy中……");

}

}


public class Wangpo implements Woman {
private Woman woman;
// 默認是潘金蓮的代理
public Wangpo(){
this.woman = new PanJinLian();
}
// 她可以是Woman的任何一個女人的代理,只要你是這一類型
public Wangpo(Woman woman){
this.woman = woman;
}

// 王婆太老了,誰看她拋媚眼?
@Override
public void makeEyeWithMan() {
woman.makeEyeWithMan();

}

// 自己幹不了,讓年輕的人看
@Override
public void happyWithMan() {
woman.happyWithMan();

}

}


public class XiMenQing {
public static void main(String[] args) {
//改編一下歷史,賈氏被西門慶勾走:
JiaShi jiaShi = new JiaShi();
//讓王婆作爲賈氏的代理人
Wangpo wangpo = new Wangpo(jiaShi);
wangpo.happyWithMan();
wangpo.makeEyeWithMan();
}
}
   那這就是活生生的一個例子,通過代理人實現了某種目的,如果真去掉王婆這個中間環節,直接是西門慶和潘金蓮勾搭,估計很難成就武松殺嫂事件。
   那我們再考慮一下,水滸裏還有沒有這類型的女人?有,盧俊義的老婆賈氏(就是和那個固管家苟合的那個),這名字起的:“假使”,那我們也讓王婆做她的代理:
把賈氏素描出來:

public class JiaShi implements Woman {

@Override
public void makeEyeWithMan() {
System.out.println("賈氏和西門慶happy中……");

}

@Override
public void happyWithMan() {
System.out.println("賈氏向西門慶拋媚眼");

}

}


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

說完這個故事,那額總結一下,代理模式主要使用了Java 的多態,幹活的是被代理類,代理類主要是
接活,你讓我幹活,好,我交給幕後的類去幹,你滿意就成,那怎麼知道被代理類能不能幹呢?同根就成,
大家知根知底,你能做啥,我能做啥都清楚的很,同一個接口唄。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章