标签:
1 package com.roc.prory; 2 3 /** 4 * 定义一个种类的人 抽象角色 5 * 6 * @author liaowp 7 * 8 */ 9 public interface Person { 10 11 /** 12 * 可以去火车站买票 13 */ 14 public void buyTicket(); 15 16 }
package com.roc.prory; /** * 小王 代理角色 * @author liaowp * */ public class XiaoWang implements Person { private Person person = null;//默认就是一个人 public XiaoWang(){//小王比较聪明,知道带别人买票赚钱。默认是只赚小明的钱 this.person = new XiaoMing(); } public XiaoWang(Person per){//赚小明的不够,只要是人就赚。 this.person = per; } /** * 小王也是人,也可以去买票。 */ public void buyTicket() {//调不然方法去买票,代理商 this.person.buyTicket(); } }
package com.roc.prory; /** * 小明 真实角色 * @author liaowp * */ public class XiaoMing implements Person { //比较懒 /* * 小明也是人,也可以去买票。 * @see com.roc.prory.Person#buyTicket() */ @Override public void buyTicket() { System.out.println("买小明的票"); } }
package com.roc.prory; /** * 小丽 * @author liaowp * */ public class XiaoLi implements Person { /** * 小丽也可以自己买票。 */ public void buyTicket() { System.out.println("买小丽的票"); } }
package com.roc.prory; /** * 测试代理模式 * @author liaowp * */ public class Client { public static void main(String[] args) { XiaoWang xiaoWang = new XiaoWang();//new 的小王 xiaoWang.buyTicket();//小王去买了小明的票,这就是代理 XiaoLi xiaoLi = new XiaoLi();//买票也要有这个人呀。先把小丽 new 出来。 XiaoWang mrWang = new XiaoWang(xiaoLi);//小丽说:小王帮我去买个票呗 mrWang.buyTicket();//屁颠屁颠的跑去买了 } }
标签:
原文地址:http://www.cnblogs.com/liaoweipeng/p/5342214.html