极速理解设计模式系列:3.代理模式(Proxy Pattern)
2011-08-25 10:06
696 查看
三个角色:实体接口(Subject),真实实体(RealSubject),代理实体(Proxy)
实体接口(Subject):目标对象的抽象接口
真实实体(RealSubject):目标对象的具体实现.
代理实体(Proxy):同样实现Subject接口,但是在方法内部是调用真实实体的相应方法实现功能点,而非代理类自己去处理事务。
实现思路:真实实体和代理实体都继承并且实现同一个接口,在客户端调用代理实体以达到调用真实实体的目的。
[b] 类图:[/b]
应用场景:在Silverlight中会用到WebService服务,WebService的原理是在客户端本地生成一个代理类,客户端调用WebService方法的时候,通过代理类去访问真实类的结果,这是代理模式中的远程代理模式。
分析:真实WebService类是部署在服务器上面的,本地需要有一个类来代理服务器上得WebService类的各种功能方法,实际上本地代理类并没有具体的处理过程,它是让服务器端的相应的真实实体类的对应方法运行。
下面我们在控制台程序去演示一下如何使用Proxy Pattern:
一、实体接口(Subject)
二、真实实体(RealSubject)
三、代理实体(Proxy)
四、客户端
如需源码请点击 ProxyPattern.rar 下载。
实体接口(Subject):目标对象的抽象接口
真实实体(RealSubject):目标对象的具体实现.
代理实体(Proxy):同样实现Subject接口,但是在方法内部是调用真实实体的相应方法实现功能点,而非代理类自己去处理事务。
实现思路:真实实体和代理实体都继承并且实现同一个接口,在客户端调用代理实体以达到调用真实实体的目的。
[b] 类图:[/b]
应用场景:在Silverlight中会用到WebService服务,WebService的原理是在客户端本地生成一个代理类,客户端调用WebService方法的时候,通过代理类去访问真实类的结果,这是代理模式中的远程代理模式。
分析:真实WebService类是部署在服务器上面的,本地需要有一个类来代理服务器上得WebService类的各种功能方法,实际上本地代理类并没有具体的处理过程,它是让服务器端的相应的真实实体类的对应方法运行。
下面我们在控制台程序去演示一下如何使用Proxy Pattern:
一、实体接口(Subject)
/// <summary> /// 统一接口 /// </summary> interface IWebService { void FirstMethod(); void SecendMethod(); }
二、真实实体(RealSubject)
class WebServiceTrue:IWebService { public void FirstMethod() { Console.WriteLine("第一个实体方法"); } public void SecendMethod() { Console.WriteLine("第二个实体方法。"); } }
三、代理实体(Proxy)
class WebServiceProxy:IWebService { IWebService webSerTrue; /// <summary> /// 构造函数 /// </summary> public WebServiceProxy() { webSerTrue = new WebServiceTrue(); } /// <summary> /// 调用真实类的第一个方法 /// </summary> public void FirstMethod() { webSerTrue.FirstMethod(); } /// <summary> /// 调用真实类的第二个方法 /// </summary> public void SecendMethod() { webSerTrue.SecendMethod(); } }
四、客户端
class Program { static void Main(string[] args) { //直接使用代理类运行即可 WebServiceProxy webProxy = new WebServiceProxy(); webProxy.FirstMethod(); webProxy.SecendMethod(); Console.ReadLine(); } }
如需源码请点击 ProxyPattern.rar 下载。
相关文章推荐
- 极速理解设计模式系列:3.代理模式(Proxy Pattern)
- 我所理解的设计模式(C++实现)——代理模式(Proxy Pattern)
- 极速理解设计模式系列:15.中介者模式(Mediator Pattern)
- 极速理解设计模式系列:20.模板方法模式(Template Method Pattern)
- 极速理解设计模式系列:2.工厂方法模式(Factory Method Pattern)
- 极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
- 极速理解设计模式系列:19.备忘录模式(Memento Pattern) 推荐
- 深入理解JavaScript系列(31):设计模式之代理模式
- 极速理解设计模式系列:8.策略模式(Strategy Pattern)
- 极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
- 极速理解设计模式系列:2.观察者模式(Observer Pattern)
- 极速理解设计模式系列【目录索引】
- 极速理解设计模式系列:8.策略模式(Strategy Pattern)
- 极速理解设计模式系列:2.观察者模式(Observer Pattern)
- 深入理解JavaScript系列(31):设计模式之代理模式
- 极速理解设计模式系列【目录索引】
- 极速理解设计模式系列:7.桥接模式(Bridge Pattern)
- 极速理解设计模式系列:16.迭代器模式(Iterator Pattern)
- 深入理解JavaScript系列(31):设计模式之代理模式详解
- 极速理解设计模式系列:21.简单工厂模式(Simple Factory Pattern)