设计模式:代理模式

代理模式:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,A类不想或者不能直接被引用,而代理类就可以在客户端和目标对象之间起到中介的作用。
假如我们的系统中的一个业务逻辑是java写的,现在需要在这个逻辑之前加上日志记录。但是java那边又很忙没时间修改代码,那么这个场景就可以用代理模式来解决,具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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代理:为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以这些结果。

posted @   #谭  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示