using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Client client = new Client();
Console.WriteLine("Client: Executing the client code with a real subject:");
RealSubject realSubject = new RealSubject();
client.CleintCode(realSubject);
Console.WriteLine();
Console.WriteLine("Client:Executing the same client code with a proxy:");
Proxy proxy= new Proxy(realSubject);
client.CleintCode(proxy);
}
}
public interface ISubject
{
void Request();
}
class RealSubject : ISubject
{
public void Request()
{
Console.WriteLine("RealSubject:Handing Request。。");
}
}
class Proxy : ISubject
{
private RealSubject _realSubject;
public Proxy(RealSubject realSubject)
{
this._realSubject = realSubject;
}
public void Request()
{
if (this.CheckAccess())
{
this._realSubject.Request();
this.LogAccess();
}
}
public bool CheckAccess()
{
Console.WriteLine("Proxy:Checkingg access prior to firign a real request.");
return true;
}
public void LogAccess()
{
Console.WriteLine("Proxy:Logging the time of request");
}
}
public class Client
{
public void CleintCode(ISubject subject)
{
subject.Request();
}
}
}
C# 代理模式
最新推荐文章于 2024-08-07 11:26:58 发布