设计模式结构型之代理模式
什么是代理,在现实生活中,我们去买火车票,可以到各个地方的火车票代售点去购买,而不用到火车站去,代售点本身只需要引用火车站的业务就拥有了售票功能。
在软件的设计中,我们可以也可以通过一个代理类来实现真实业务方法。代码实现如下:
/// <summary> /// 真实业务类 /// </summary> public class RealSubject { public void DoSomething() { Console.WriteLine("执行火车站卖票业务"); } } /// <summary> /// 代理类 /// </summary> 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(); } } }
使用代理模式,我们可以在代理类中实现一些我们平时需要加入的非业务的需求,比如异常处理,加入日起,缓存,权限代理,延迟代理等,而不需要修改我们的真实业务类。这样我们真实业务类可以更专注做好与系统业务需求相关的事情,保证真实业务类的简洁。