自己写的一个以影视明星为例子的代码如下:
MoveStar接口:
class="java">package com.dsl.proxy_pattern; /** * 定义一个影视明星接口 * @author EX-DENGSHENGLONG217 * */ public interface MoveStar { public void ad();//明生基本都拍广告撒.. public void film();//也能拍电影 }
?
接下来为两个实现类:
package com.dsl.proxy_pattern; /** * 范冰冰明显就是一个影视明星,因此她有下列行为 * @author EX-DENGSHENGLONG217 * */ public class Fanbingbing implements MoveStar { @Override public void ad() { System.out.println("我能拍广告的!"); } @Override public void film() { System.out.println("我演的电影 很好噢!"); } }
?
代理人类:
package com.dsl.proxy_pattern; /** * 范冰冰太忙了 这是她的代理人 我们认为她也能下列行为 * @author EX-DENGSHENGLONG217 * */ public class ProxyFan implements MoveStar { private MoveStar moveStar; public ProxyFan(){ this.moveStar=new Fanbingbing();//默认为范爷的代理人撒! } public ProxyFan(MoveStar moveStar){ this.moveStar=moveStar;//同明她也可以是任何影星的代理人 } @Override public void ad() { this.moveStar.ad();//自己是不能拍广告的了要明星拍的 } @Override public void film() { this.moveStar.film();//同样 } }
?
影视制作人类:
package com.dsl.proxy_pattern; public class MoveProducer { /** * 影视制作人来请明星们拍广告了 * @param args */ public static void main(String[] args) { //哎!明星们太忙了啊,只有先请她们的代理人了 ProxyFan pf=new ProxyFan();//这样就是范冰冰的代理人 pf.ad(); pf.film(); //end 嗯这里就是代理人帮明星们做的事了! //什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道 //被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被 //代理的人能干活呀。 /*说完这个故事,那额总结一下,代理模式主要使用了Java 的多态,干活的是被代理类,代理类主要是 接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成, 大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗。*/ } }
?