C# Design Patterns (4) - Proxy
2009-07-06 07:07:20 来源:WEB开发网Proxy Pattern (代理模式)
The Proxy Pattern provides a surrogate or placeholder for another object to control access to it...
- Design Patterns: Elements of Reusable Object-Oriented Software
在 GoF 的书中,对 Proxy 模式的定义为:替某个对象,提供一个替身,以控制外界对这个对象的访问。而这个被替身代理的对象 (被代理者),可能是远端的对象、创建时需要高成本或大计算量的对象,或需要安全控制的对象。
图 1 此图为 Proxy 模式的经典类图
01_Shell / Program.cs
using System;
namespace _01_Shell
{
//用户端程序
class Program
{
static void Main(string[] args)
{
//用户把 Proxy (代理者) 视为 RealSubject (真实的对象) 来操作
Proxy proxy = new Proxy();
proxy.Request();
Console.Read();
}
}
//代理者、被代理者共同实现的接口
abstract class Subject
{
public abstract void Request();
}
//被代理者。真实的对象,把复杂性封装在此
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();
}
}
}
/*
执行结果:
真实的请求
*/
更多精彩
赞助商链接