用途:代理模式主要介绍代理的作用,在我理解,代理就相当于一个交易的中间人,交易时通过中间人完成的,WebService调用的时候,就是一个典型的代理模式。
代理的必要性:比如说,类Subject有三个方法,TestA,TestB和TestC,如果另外一个类RequestSubject1有权限访问Subject的TestA和TestB方法,而不能访问TestC方法,而另外一个访问类RequestSubject2有权限访问Subject的TestB和TestC方法,而不能访问TestA方法,解决这个问题就只能使用代理类来完成了,代理类就是通过一个中介作用,上面描述的是一个部分代理的作用,让请求方和回复方为了安全方法的考虑,间接的进行信息交易。
UML类图:

示例代码:
抽象基类:
abstract class Subject
{
public abstract void Request();
}
真实实体类:
class RealSubject:Subject
{
public override Request()
{
//对请求的真正处理功能
}
}
代理类:
class Proxy:Subject
{
RealSubject realSubject;
public override void Request()
{
if(realSubject ==null)
{
realSubject=new RealSubject();
}
realSubject.Request();
}
}
客户端调用:
Proxy proxy=new Proxy();
proxy.Request();
说明:如果使用部分代理,值代理真实对象的部分方法,代理类就不能继承自和真实类相同的抽象基类了。
浙公网安备 33010602011771号