Java设计模式学习--代理模式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java设计模式学习--代理模式

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

 2013/10/14 15:32:51  deng816  程序员俱乐部  我要评论(0)
  • 摘要:今天要写的是设计模式中的代理模式,这是一个很有用的模式自己写的一个以影视明星为例子的代码如下:MoveStar接口:packagecom.dsl.proxy_pattern;/***定义一个影视明星接口*@authorEX-DENGSHENGLONG217**/publicinterfaceMoveStar{publicvoidad();//明生基本都拍广告撒..publicvoidfilm();//也能拍电影}接下来为两个实现类:packagecom.dsl.proxy_pattern
  • 标签:学习 Java 模式 代理 设计 设计模式 代理模式

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

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

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

}

?

发表评论
用户名: 匿名