设计模式-代理模式

代理模式

  • 为其他对象提供一种代理以控制对这个对象的访问
结构如下
  • Subject类:定义RealSubject类和Proxy类的公用接口,可以使得在任何使用RealSubject类的地方都可以使用Proxy类
	public interface Subject{
		void request();
	}
  • RealSubject类:定义Proxy所代表的真实实体
	public class RealSubject implements Subject{
		@Override
		public void request(){
		//具体的请求
		}
	}
  • Proxy类:保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体
	public class Proxy implements Subject{
		RealSubject realSubject;
		@Override
		public void request(){
			if(realSubject == null)
			{
				realSubject = new RealSubject();
			}
			realSubject.request();
		}
	}
  • 客户端代码:可以看出Proxy代理类完成了RealSubject的工作
	public class test {
		public static void main(String []args){
			Proxy proxy = new Proxy();
			proxy.request();
		}
	}

代理模式应用场景

  • 远程代理:为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
  • 虚拟代理:根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。
    (当打开一个很大的HTML网页时,先看到文字,图片一张一张下载,未打开的图片框就是通过虚拟代理来代替了真实的图片,此时代理模式存储了真实图片的路径和尺寸——浏览器是通过代理模式来优化下载)
  • 安全代理:用来控制真实对象访问时的权限。
  • 智能索引:当调用真实的对象时,代理处理另外一些事。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值