项目结构:
运行效果:
======================================================
代码部分:
======================================================
/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 }