1.特点:控制对单个对象的访问。
2.概念:为其它对象提供一种代理以控制对这个对象的访问。
3.类图:

4.程序实现:
/// <summary>
/// 抽象实体,定义真实实体与代理的公共接口
/// </summary>
public interface ISubject
{
void Function1();
void Function2();
}
/// <summary>
/// 真实实体,真正的功能实现者
/// </summary>
public class RealSubject:ISubject
{
public void Function1()
{
Console.WriteLine("This is the first function.");
}
public void Function2()
{
Console.WriteLine("This is the second function.");
}
}
/// <summary>
/// 代理,用来访问真实的实体
/// </summary>
public class Proxy : ISubject
{
/// <summary>
/// 保存一个真实实体,用以在代理中访问真实实体的功能。
/// </summary>
private RealSubject realSubject;
public Proxy()
{
realSubject = new RealSubject();
}
/// <summary>
/// 实现与Subject相同的接口,实际调用的是RealSubject的Function1()
/// </summary>
public void Function1()
{
realSubject.Function1();
}
/// <summary>
/// 实现与Subject相同的接口,实际调用的是RealSubject的Function2()
/// </summary>
public void Function2()
{
realSubject.Function2();
}
}
class Program
{
static void Main(string[] args)
{
// 实例化代理
ISubject subjectProxy = new Proxy();
// 通过代理调用具体功能
subjectProxy.Function1();
subjectProxy.Function2();
Console.Read();
}
}
原文:http://www.cnblogs.com/ice-baili/p/4729154.html