设计模式:代理模式
代理模式:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,A类不想或者不能直接被引用,而代理类就可以在客户端和目标对象之间起到中介的作用。
假如我们的系统中的一个业务逻辑是java写的,现在需要在这个逻辑之前加上日志记录。但是java那边又很忙没时间修改代码,那么这个场景就可以用代理模式来解决,具体代码如下:
public class Business
{
/// <summary>
/// 业务逻辑代码
/// </summary>
public void DoSomething()
{
Console.WriteLine("开始处理业务逻辑!");
Thread.Sleep(2000);
Console.WriteLine("业务逻辑处理成功!");
}
}
/// <summary>
/// Business类的代理类
/// </summary>
public class ProxyBusiness
{
private Business _Business = new Business();
public void DoSomething()
{
Console.WriteLine("在业务逻辑处理前添加日志!");
this._Business.DoSomething();
}
}
static void Main(string[] args)
{
//客户段调用
ProxyBusiness proxyBusiness = new ProxyBusiness();
proxyBusiness.DoSomething();
Console.ReadKey();
}
常见的代理模式应用有以下几种:
远程代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是本电脑中,也可以在另一台电脑中。最典型的例子就是——客户端调用Web服务或WCF服务。
虚拟代理:根据需要创建一个资源消耗较大的对象,使得对象只在需要时才会被真正创建。
保护代理:控制一个对象的访问,可以给不同的用户提供不同级别的使用权限。
智能引用代理:当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等。
Cache代理:为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以这些结果。

浙公网安备 33010602011771号