Java设计模式之代理模式

1.代理模式的介绍

        我是这么理解代理模式的:大熊突然收到短信说快递到了,但是他现在正在写作业没时间去拿快递,所以他只好委托哆啦A梦帮忙他去拿快递。在这个过程中共出现了代理模式的三个角色,主题接口----即拿快递,是大熊委托哆啦A梦要做的事;真实主题----大熊,想要去拿快递但没时间;代理类----哆啦A梦,真正做事的人。


2.代理模式的结构

       

角色作用
主题接口定义代理类和真实主题的公共对外方法,也是代理类代理真实主题的方法
真实主题真正实现业务逻辑的类
代理类用来代理和封装真实主题
Main客户端,使用代理类和主题接口完成一些工作


3.代理模式的实现

基于以上设计,IEMSRequest实现如下

public interface IEMSRequest
{
	public String request();
}

EMSRequest实现如下,它是一个重量级对象,构造会比较慢。

public EMSRequest implements IEMSRequest
{
	public EMSRequest()
	{
		try
		{
			Thread.sleep(1000);
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
	@Override
	public String request()
	{
		return "request string";
	}
}

代理类EMSRequestProxy是轻量级对象,创建很快,用于代替EMSRequest的位置。

public EMSRequestProxy implements IEMSRequest
{
	private EMSRequest real = null;
	
	@Override
	public string request()
	{
		//在真正需要的时候,才创建真实独享,创建过程可能很慢
		if(real == null)
		{
			real = new EMSRequest();
		}
		
		return real.request();
	}
}

最后,主函数中,他引用IEMSRequest接口,并使用代理类工作。

public class Main
{
	public static void main(String[] args)
	{
		IEMSRequest q = new EMSRequestProxy();
		q.request();
	}
}

这就是整个代理模式的介绍。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值