定义
为其他对象提供一种代理以控制对这个对象的访问
使用场景
不方便和不适合做的职责交给代理去做
比如中介、媒婆、邮差、代购、远程代理
代码实现
//共同职责
abstract class Subject
{
     public abstract void Request();
}
//真实对象
class RealSubject: Subject
{
     public override void Request()
     {
          Console.WriteLine("真实的请求");
     }
}
//代理,需要创建真实对象
class Proxy: Subject
{
    RealSubject rs;
    public override void Request()
    {
        if (rs == null)
        {
            rs = new RealSubject();
        }
        rs.Request();
    }
}
void Main()
{
    Proxy p = new Proxy();
    p.Request();
}优点
中介隔离作用
开闭原则,增加功能
职责清晰。 高扩展性。 智能化
缺点
1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 
2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂