代理模式其实就是在访问对象时引入一定程度的间接性, 因为这种间接性, 可以附加多种用途.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProxyMode
{
class Program
{
static void Main(string[] args)
{
Proxy proxy = new Proxy();
proxy.Request();
Console.Read();
}
}
// 抽象基类, 定义共同的接口
abstract class Subject
{
//定义共同的接口. 实体类和代理类都会override这个接口.
public abstract void Request();
}
// 真实实体
class RealSubject : Subject
{
//override接口
public override void Request()
{
Console.WriteLine("真实的请求");
}
}
// 代理类
class Proxy : Subject
{
// 包含了实体的对象
RealSubject realsubject;
public override void Request()
{
if(realsubject ==null)
{
realsubject = new RealSubject();
}
// 执行的是实体的行为.
realsubject.Request();
}
}
}