什么是代理设计模式?就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用。

 生活中的例子:过年加班比较忙,没空去买火车票,这时可以打个电话到附近的票务中心,叫他们帮你买张回家的火车票,当然这会附加额外的劳务费。但要清楚票务中心自己并不卖票,只有火车站才真正卖票,票务中心卖给你的票其实是通过火车站实现的。这点很重要!

如何实现代理呢?首先被代理对象和代理对象都需要实现同一个接口,其次,代理对象要包含被代理对象的引用。那么,接下来我们用一个程序演示一下实现过程。

定义一个接口:

public interface person {
void buyTicket();
}

实现上面接口的被代理类

public class BusyMan implements person{
    @Override
    public void buyTicket() {
        System.out.println("买票");
    }
}

代理类

public class HelpMan implements person {
    person p;
    public HelpMan(person p) {
        this.p = p;
    }
    @Override
    public void buyTicket() {
        System.out.println("×××");
        p.buyTicket();
    }
}

测试类

public class TestProxy {
public static void main(String[] args) {
    person p=new BusyMan();
    new HelpMan(p).buyTicket();
}
}

运行结果

×××
买票

通过程序可以看到,这个很忙的BusyMan并没有真的自己买票,而是通过了一个HelpMan来实现这个买票的功能。这就是代理设计模式,也被称为静态代理。当然还有动态代理,不过先不介绍了。。。