代理模式是常用的设计模式之一,其目的是为其他对象提供一个代理以控制对这个对象的访问。在C#中,代理模式可以通过使用委托和事件来实现。
以下是一个简单的代理模式的C#示例:
cs
// 定义一个抽象的Subject接口
public interface ISubject
{
void DoAction();
}
// 实现Subject接口的具体实现
public class RealSubject : ISubject
{
public void DoAction()
{
Console.WriteLine("RealSubject is doing something.");
}
}
// 定义一个保存具体实现的对象引用的代理类
public class Proxy : ISubject
{
private ISubject _realSubject;
public Proxy(ISubject realSubject)
{
this._realSubject = realSubject;
}
public void DoAction()
{
Console.WriteLine("Proxy: Doing something before.");
_realSubject.DoAction(); // 调用实际对象的方法
Console.WriteLine("Proxy: Doing something after.");
}
}
// 使用代理
public class Program
{
public static void Main(string[] args)
{
ISubject realSubject = new RealSubject();
ISubject proxy = new Proxy(realSubject);
proxy.DoAction();
}
}
在这个例子中,ISubject
是一个定义了操作的接口,RealSubject
是实现了该接口的具体类,而Proxy
是代理类,它包含了对RealSubject
的引用。当客户端通过代理调用DoAction
方法时,代理会在调用实际对象之前和之后执行一些操作。这是一个简单的代理模式示例。