代理模式就是就是用一个类来代替某个类来执行一些方法。生活中的例子比比皆是,例如:接收快递叫快递员送到你手上,去哪里游玩用交通工具代替步行。。。。
好了,我们那收快递做例子:首先定义收快递的接口:
IEms { deliver();call();getFood();}
然后我们用具体的类实现这个接口(京东快递):
JDEms IEms {deliver() {System..println();}call() {System..println();}getFood() {System..println();}}
一般情况下,我们只需创建一个JDEms就可以了,但是有时候我们不想用这个实例呢?这是就要用到代理类了。
EmsProxy {IEms ;EmsProxy(IEms ems) {.= ems;}call(){..call();}deliver(){..deliver();}getFood(){..getFood();}}
调用:
IEms ems = new JDEms();
EmsProxy proxy = new EmsProxy(ems);
proxy.deliver();
proxy.call();
proxy.getFood();
已接口作为形参,表示要被代理的对象,然后用代理对象来执行某些动作。这个就是代理模式的雏形。不过有没有想过,如果有很多需要被代理的类呢?那我们是不是要建立很多代理类,这显示是增加了代码的冗余,有没有一个类或者接口可以在运行的时候才决定哪个类是被代理的呢?下面就是动态代理要做的事了,请戳