设计模式:代理模式

代理模式:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,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代理:为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以这些结果。

posted @ 2022-04-16 19:51  #谭  阅读(44)  评论(0)    收藏  举报