设计模式 : 代理模式

本文详细介绍了代理模式的概念及其应用场景,通过具体实例展示了如何实现代理模式,包括定义代理与真实主题的共同接口,以及如何通过代理来扩展真实主题的功能。

代理模式(Proxy)  :  为其他对象提供一种代理以控制对这个对象的访问.

这样做的好处是,可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.
这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式

在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。

最容易理解的代理模式,就是Windows的快捷方式,用快捷方式来访问文件,即是代理模式的一种应用

优点: 1、职责清晰。 2、高扩展性。 3、智能化。

缺点: 1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

使用场景:按职责来划分,通常有以下使用场景: 1、远程代理。 2、虚拟代理。 3、Copy-on-Write 代理。 4、保护(Protect or Access)代理。 5、Cache代理。 6、防火墙(Firewall)代理。 7、同步化(Synchronization)代理。 8、智能引用(Smart Reference)代理。


代码示例:




Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy.

abstract class Subject{
	public abstract void  Request();
}

RealSubject类,定义Proxy所代表的真实实体.

class RealSubject implements Subject{
	public void Request(){
		System.out.println("真正的请求");
	}
}

Proxy类,保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样的代理就可以用来替代实体.

class Proxy implements Subject{
	RealSubject realSubject;
	public void Request(){
		if (realSubject == null) {
			realSubject = new RealSubject();
		}
		realSubject.Request();
	}
}

客户端代码

Proxy proxy = new Proxy();
proxy.Request();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值