设计模式------代理模式

代理模式:为其他对象提供一种代理以控制对这个对象的访问。代理一般分为几种:远程代理、虚拟代理、安全代理等。

远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

虚拟代理:是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。这样就可以达到性能的最优化,比如说打开一个很大的html网页,里面有很多图片和文字,但还是可以很快的打开它,此时看到的是文字但是图片是一张张的加载的,那些未打开的图片框就是通过虚拟代理来替代了真实的图片,此时的代理存储了真实图片的路径和大小。

安全代理:用来控制真实对象访问时的权限。一般用于对象应该有不同访问权限的时候。

智能指引:指当调用真实的对象时,代理处理另外一些事。

示例:proxyer是代理者,pursuid是真实追求者,schoolgirl是被追求者;被追求者并不认识真实追求者但是认识代理者,追求者请求代理者帮忙追求schoolgirl:

// 定义被追求者
class schoolgirl
{
	private String name;
	schoolgirl(String name)
	{
		this.name = name;
	}
	void getflavor()
	{
		System.out.println("接收送花!");
	}
}
// 定义接口,抽象出代理和被代理的方法
interface behavor
{
	public abstract void sendflavor();
	public abstract void senddoll();
	public abstract void sendgift();
}
// 追求者类内部传入被追求者的引用和定义方法
class pursuid implements behavor
{
	schoolgirl shgirl;
	pursuid(schoolgirl girl)
	{
		this.shgirl = girl;
	}
	public void sendflavor()
	{
		System.out.println("送花");
	}
	public void senddoll()
	{
		System.out.println("送洋娃娃");
	}
	public void sendgift()
	{
		System.out.println("送礼物");
	}
}
// 定义代理,通过传入被追求者引用在内部定义追求者对象,并用追求者对象去实现方法提供给代理使用
class proxyer
{
	pursuid gg;
	proxyer(schoolgirl girl)
	{
		gg = new pursuid(girl);
	}
	public void sendflavor()
	{
		gg.sendflavor();
	}
	public void senddoll()
	{
		gg.senddoll();
	}
	public void sendgift()
	{
		gg.sendgift();
	}
}
public class proxy
{
	public static void main(String args[])
	{
		schoolgirl sg = new schoolgirl("小吖吖");
	
		proxyer py = new proxyer(sg);
		py.sendflavor();
		py.senddoll();
		py.sendgift();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值