标签:
概述
在软件开发中,有一种设计模式可以提供与代购网站类似的功能。由于某些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称之为“代理”的第三者来实现间接访问,该方案对应的设计模式被称为代理模式。
代理模式是一种应用很广泛的结构型设计模式,而且变化形式非常多,常见的代理形式包括远程代理、保护代理、虚拟代理、缓冲代理、智能引用代理等。
定义
代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。
实现
/// <summary> /// 供应商 /// </summary> public interface Supplier { /// <summary> /// 买奶粉 /// </summary> void BuyMilkPowder(); }
/// <summary> /// 店员 /// </summary> public class Salesclerk : Supplier { /// <summary> /// 买奶粉方法 /// </summary> public void BuyMilkPowder() { Console.WriteLine("通过店员买了一袋奶粉。"); } }
public class Proxy : Supplier { Salesclerk salesclerk = new Salesclerk(); public void BuyMilkPowder() { Console.WriteLine("通过中间商买了一袋奶粉。"); salesclerk.BuyMilkPowder(); } }
客户端
class Program { static void Main(string[] args) { Supplier proxy = new Proxy(); proxy.BuyMilkPowder(); Console.ReadLine(); } }
总结
1、代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度;
2、代理对象在客户端和目标对象之间起到一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发出请求之前进行一个额外的操作,例如权限检查等。
缺点:
1、 由于在客户端和真实主题之间增加了一个代理对象,所以会造成请求的处理速度变慢
2、实现代理类也需要额外的工作,从而增加了系统的实现复杂度。
标签:
原文地址:http://www.cnblogs.com/Jabben/p/5573019.html