一.介绍
代理模式(Proxy Pattern)。属于结构型模式。为其它对象提供一种代理以控制对该对象的访问。
二.实现
代理的概念很简单,就是想调用A类方法时,不直接调用,而是通过调用代理B类的方法,由B类方法去调用A类的方法。
/// <summary> /// 抽象主题角色 /// </summary> public interface IPeople { void Say(); } /// <summary> /// 真实主题角色 /// </summary> public class APeople : IPeople { public void Say() { Console.WriteLine("今天xxx"); } } /// <summary> /// 代理 /// </summary> public class Proxy : IPeople { IPeople aPeople; public Proxy() { this.aPeople = new APeople() ; } public void Say() { Console.WriteLine("A说了:"); aPeople.Say(); } } //调用 public static void Main(string[] args) { IPeople proxy = new Proxy(); proxy.Say(); }
三.总结
优点:
1.代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度。
2.代理对象在客户端和目标对象之间起到了一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发起请求之前进行额外操作,比如权限检查。
缺点:
1.由于在客户端和目标对象之间增加了一个代理对象,会造成请求处理的速度变慢。
2.实现代理类会增加额外的代码量,从而增加系统的复杂程度。