你的位置:首页 > ASP.net教程

[ASP.net教程]设计模式学习笔记之代理模式


代理模式
    为另一个对象提供一个替身或占位符以控制对这个对象的访问。

    使用代理模式创建代表对象,让代表对象控制某个对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。

    在代理模式中的角色

        抽象对象角色(Subject):声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。

        目标对象角色(RealSubject):定义了代理对象所代表的目标对象。

        代理对象角色(Proxy):代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象;代理对象提供一个与目标对象相同的接口,以便可以在任何时候替代目标对象。代理对象通常在客户端调用传递给目标对象之前或之后,执行某个操作,而不是单纯地将调用传递给目标对象。


    图解:
    首先是Subject,它为 RealSubject 和 Proxy 提供了接口。通过实现同一接口,Proxy在RealSubject出现的地方取代它。
    RealSubject 是真正做事的对象,它是被Proxy代理和控制的对象。
    Proxy 持有 RealSubject 的引用。在某些例子中,Proxy 还会负责 RealSubject 对象的创建与销毁。客户和RealSubject的交互都必须通过Proxy。因为Proxy和RealSubject实现相同的接口(Subject),所以任何用到RealSubject的地方,都可以用Proxy取代。Proxy也控制了对RealSubject的访问,在某些情况下,我们可能需要这样的控制。这些情况包括RealSubject是远程的对象、RealSubject创建开销大,或RealSubject需要被保护。