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