`
deng816
  • 浏览: 6568 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Java设计模式学习--代理模式

阅读更多

今天要写的是设计模式中的代理模式,这是一个很有用的模式

自己写的一个以影视明星为例子的代码如下:

MoveStar接口:

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 的多态,干活的是被代理类,代理类主要是
接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,
大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗。*/
	}

}

 

7
5
分享到:
评论
9 楼 ssrc0604hx 2013-10-15  
如果可以讲一下主要的运行情况,就更好了


ps:看LZ的文字,是四川人?
8 楼 finallygo 2013-10-15  
代理模式重视行为的加强,具体代码上说就是修改 ProxyFan 的构造函数,参数是MoveStar ,另外 在代理的方法中添加一些其他的动作
7 楼 lcfred 2013-10-15  
通俗易懂,不错
6 楼 ileson 2013-10-15  
不错。。。
5 楼 devilyard 2013-10-15  
举的例子不错
4 楼 deng816 2013-10-14  
netkiller.github.com 写道
能融会贯通到工作中才行

谢谢!说的很对!
3 楼 netkiller.github.com 2013-10-14  
能融会贯通到工作中才行
2 楼 ys_sunshine 2013-10-14  
讲的非常通俗易懂啊~
1 楼 ys_sunshine 2013-10-14  
亲,你是范爷的粉丝吧~

相关推荐

Global site tag (gtag.js) - Google Analytics