所谓代理,就是对真实对象的一个代理;代表着真实的对象行驶权利。我们先看看结构图:
具体的代码如下:
//Subject 类
abstract class Subject
{
public abstract void Request();
}
//RealSubject 类,Proxy代理真实的实体对象
public class RealSubject:Subject
{
public override void Request()
{
Console.WriteLine("真实的请求");
}
}
//代理类
class Proxy:Subject
{
RealSubject realsubject;
public override void Request()
{
if(realsubject==null)
{
realsubject=new RealSubject();
}
realsubject.Request();
}
}
//客户端
static void Main(string[] args)
{
//此处隐藏了真实对象,而前台只能看到代理对象的使用情况
Proxy p=new Proxy();
p.Request();
}
我们在实际的项目中也用到也很多的代码模式:1.远程代理;我们经常用的Webservice服务,实际上会创建一个远程调用的文件夹,其本身就是代理调用。2.虚拟代理;我们经常用来存储实例化时间长的真实对象,例如:浏览器浏览网页的时候,图片后续才出现;3.安全代理;时间上就是控制对象的访问权限;4.智能指引;