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

}

 

你可能感兴趣的:(java,设计模式,代理模式)