代理模式
代理模式:为其它对象提供了一种代理,以控制对这个对象的访问
代理在客户端和实际实体之间增加了一层处理,主要有下列几种使用场合
1 远程代理,为一个对象在不同的地址空间提供局部代表,隐藏了一个对象存在于不同地址空间的事实,如Web引用
2 虚拟代理,根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象,从而优化性能,如浏览器
3 安全代理,用来控制真实对象访问时的权限
4 智能引用,当调用真实对象时,代理处理另外一些事,如自动释放,持久化对象,加锁等
最简单的代理模式例子如下:
/// <summary>
/// 定义实体和代理都需要实现的接口
/// </summary>
public interface ISubject
{
void Request();
}
/// <summary>
/// 定义实际的实体
/// </summary>
public class RealSubject : ISubject
{
public void Request()
{
Console.WriteLine("Real Request");
}
}
/// <summary>
/// 定义代理,其中保存一个实体的引用,在调用代理方法时执行实际实体的方法
/// </summary>
public class Proxy : ISubject
{
ISubject subject;
public Proxy()
{
subject = new RealSubject();
}
public void Request()
{
subject.Request();
}
}
客户端通过调用代理,调用实际对象的方法:
Proxy proxy = new Proxy(); proxy.Request();

浙公网安备 33010602011771号