设计模式结构型之代理模式


 什么是代理,在现实生活中,我们去买火车票,可以到各个地方的火车票代售点去购买,而不用到火车站去,代售点本身只需要引用火车站的业务就拥有了售票功能。

在软件的设计中,我们可以也可以通过一个代理类来实现真实业务方法。代码实现如下:

    /// 
    /// 真实业务类
    /// 
    public class RealSubject
    {
        public void DoSomething()
        {
            Console.WriteLine("执行火车站卖票业务");
        }
    }

    /// 
    /// 代理类
    /// 
    public class ProxySubject
    {
        private readonly RealSubject _realSubject = new RealSubject();

        public void DoSomething()
        {
            _realSubject.DoSomething();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            {
                //正常调用
                RealSubject subject = new RealSubject();
                subject.DoSomething();
            }
            {
                //通过代理调用
                ProxySubject subject = new ProxySubject();
                subject.DoSomething();
            }
        }
    }

使用代理模式,我们可以在代理类中实现一些我们平时需要加入的非业务的需求,比如异常处理,加入日起,缓存,权限代理,延迟代理等,而不需要修改我们的真实业务类。这样我们真实业务类可以更专注做好与系统业务需求相关的事情,保证真实业务类的简洁。