什么是代理模式

代理模式:给某个对象提供一个代理,由代理控制对原对象的访问。

代理模式的结构

一个代理模式实例

有一个对象(Subject)有一个公开的操作(request),可以无限制地使用它。现在想改造这个对象,只能够让通过验证的人有次数地使用它。在不改变原对象(RealSubject)情况下,使用(Proxy)来实现这个功能。

实例代码

Subject

public abstract class Subject {
    public abstract void request();
}

RealSubject

public class RealSubject extends Subject {
    @Override
    public void request() {
        System.out.println("RealSubject request.");
    }
}

Proxy

public class Proxy extends Subject {

    private RealSubject subject;

    public Proxy() {
        this.subject = new RealSubject();
    }

    @Override
    public void request() {
        validate();
        subject.request();
    }

    private void validate(){
        System.out.println("validate ...");
    }
}

Client

public class Client {
    public static void main(String[] args){
        Subject subject = new Proxy();
        subject.request();
    }
}

输出结果

validate ...
RealSubject request.

(完)