让你一看就明白什么是代理模式java版本_源码下载

项目结构:

运行效果:

======================================================

代码部分:

======================================================

/Proxy/src/com/b510/proxy/dao/GiveGift.java

 1 /**
 2  * 
 3  */
 4 package com.b510.proxy.dao;
 5 
 6 /**
 7  * 送礼物interface
 8  * @author hongten(hongtenzone@foxmail.com)
 9  * @date 2013-2-16
10  */
11 public interface GiveGift {
12     /**
13      * 送洋娃娃
14      */
15     public void giveDolls();
16     /**
17      * 送鲜花
18      */
19     public void giveFlowers();
20     /**
21      * 送巧克力
22      */
23     public void giveChocolate();
24 }

/Proxy/src/com/b510/proxy/dao/impl/Pursuit.java

 1 /**
 2  * 
 3  */
 4 package com.b510.proxy.dao.impl;
 5 
 6 import com.b510.proxy.dao.GiveGift;
 7 import com.b510.proxy.bean.SchoolGirl;
 8 
 9 /**
10  *追求者
11  * 
12  * @author hongten(hongtenzone@foxmail.com)
13  * @date 2013-2-16
14  */
15 public class Pursuit implements GiveGift {
16 
17     /**
18      * 追求者要追求的对象女生
19      */
20     private SchoolGirl schoolGirl;
21 
22     public Pursuit(SchoolGirl schoolGirl) {
23         this.schoolGirl = schoolGirl;
24     }
25 
26     @Override
27     public void giveChocolate() {
28         System.out.println(schoolGirl.getName() + " give you Chocolate!");
29     }
30 
31     @Override
32     public void giveDolls() {
33         System.out.println(schoolGirl.getName() + " give you Dolls!");
34     }
35 
36     @Override
37     public void giveFlowers() {
38         System.out.println(schoolGirl.getName() + " give you Flowers!");
39     }
40 }

/Proxy/src/com/b510/proxy/dao/impl/Proxy.java

 1 /**
 2  * 
 3  */
 4 package com.b510.proxy.dao.impl;
 5 
 6 import com.b510.proxy.bean.SchoolGirl;
 7 import com.b510.proxy.dao.GiveGift;
 8 
 9 /**
10  * 代理(代理就是真实对象的代表)
11  * @author hongten(hongtenzone@foxmail.com)
12  * @date 2013-2-16
13  */
14 public class Proxy implements GiveGift{
15 
16     /**
17      * 追求者对象
18      */
19     private Pursuit pursuit;
20     
21     public Proxy(SchoolGirl schoolGirl){
22         pursuit = new Pursuit(schoolGirl);
23     }
24     
25     @Override
26     public void giveChocolate() {
27         pursuit.giveChocolate();
28     }
29 
30     @Override
31     public void giveDolls() {
32         pursuit.giveDolls();
33     }
34 
35     @Override
36     public void giveFlowers() {
37         pursuit.giveFlowers();
38     }
39 
40 }

/Proxy/src/com/b510/proxy/bean/SchoolGirl.java

 1 /**
 2  * 
 3  */
 4 package com.b510.proxy.bean;
 5 
 6 /**
 7  * 被追求的女生
 8  * 
 9  * @author hongten(hongtenzone@foxmail.com)
10  * @date 2013-2-16
11  */
12 public class SchoolGirl {
13 
14     /**
15      * 名字
16      */
17     private String name;
18 
19     public String getName() {
20         return name;
21     }
22 
23     public void setName(String name) {
24         this.name = name;
25     }
26 }

/Proxy/src/com/b510/proxy/test/ProxyTest.java

 1 /**
 2  * 
 3  */
 4 package com.b510.proxy.test;
 5 
 6 import com.b510.proxy.bean.SchoolGirl;
 7 import com.b510.proxy.dao.impl.Proxy;
 8 
 9 
10 /**
11  * 为别人做嫁衣  ---- 代理模式 <br>
12  * 一个追求者(Pursuit)喜欢一个名字叫娇娇的女生(SchoolGirl),但是自己又不主动去向人家女生表白<br>
13  * 这个追求者(Pursuit)就想出了一个办法,就是叫一个daili(Proxy)的人向人家女生送东西(give****()方法)<br>
14  * 
15  * 出处:《大话设计模式》 程杰 著
16  * @author hongten(hongtenzone@foxmail.com)
17  * @date 2013-2-16
18  */
19 public class ProxyTest {
20 
21     public static void main(String[] args) {
22         //学校有一个名字叫"娇娇"的女生(SchoolGirl)
23         SchoolGirl schoolGirl = new SchoolGirl();
24         schoolGirl.setName("娇娇");
25         
26         //一个叫(Proxy)daili的男生帮助另一个人追求者(Pursuit)追求这个名叫娇娇的女生
27         Proxy daili = new Proxy(schoolGirl);
28         daili.giveChocolate();
29         daili.giveDolls();
30         daili.giveFlowers();
31         
32     }
33     
34 }

 源码下载https://files.cnblogs.com/hongten/Proxy.zip

原文地址:https://www.cnblogs.com/hongten/p/hongten_proxy.html