代理模式【Proxy Pattern】

一、引言

在《Java编程思想》的第七章,第三小节介绍了代理的概念。书中这样描述:因为我们将一个成员对象置于所要构造的类中(就像组合),但与此同时我们在新类中暴露了该成员对象的所有方法(就像继承)。书中的描述有点拗口,用通俗的话翻译一下就是:将一个类的对象放在另一个新类中(这是组合),并且在新类中暴露该对象的所有方法。

二、代码

《Java编程思想》中的例子如下:
这里写图片描述
这里写图片描述
总结一下就是两点:
(1)、代理类中要有被代理类的对象;
(2)、代理类中要有被代理类中的所有方法,在方法调用时,调用的是被代理类的对象;

三、优化

对于上述例子,可以做一点优化。对于第二点,代理类中要有被代理类中的所有方法,可以把这地方的所有方法抽象到接口中,这样就更加简洁明了,也便于复用。
下面举个西门庆和潘金莲的例子,这个例子再适合不过了,代理类非王婆莫属。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

四、总结

总结一下,代理模式主要使用了Java 的多态,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口(也就是要有被代理类的所有方法)。

猜你喜欢

转载自blog.csdn.net/zxd1435513775/article/details/80412265
今日推荐