区块链与能源行业的未来
实现代理模式,需要走以下几个步骤:
❝代理模式很容易产生错误思维的一个地方:代理对象并不是真正提供服务的一个对象,它只是替访问者访问目标对象的一个「中间人」,真正提供服务的还是目标对象,而代理对象的作用就是在目标对象提供服务之前和之后能够执行额外的逻辑。 从故事来说,小红并不是真正卖香水的,卖香水的还是香奈儿提供商,而小红只不过是在让香奈儿卖香水之前和之后执行了一些自己额外加上去的操作。❞ 讲完这个代理模式的代码实现,我们来系统地学习它究竟是如何定义的,以及实现它需要注意什么规范。 代理模式的定义:「给目标对象提供一个代理对象,代理对象包含该目标对象,并控制对该目标对象的访问。」 代理模式的目的:
静态代理与动态代理 你是否会有我一样的疑惑:代理为什么还要分静态和动态的?它们两个有啥不同吗? 很明显,所有人都会有这样的疑惑,我们先来看看它们的相同点:
重点当然是它们的不同之处,动态代理在静态代理的基础上做了改进,极大地提高了程序的「可维护性」和「可扩展性」。我先列出它们俩的不同之处,再详细解释为何静态代理不具备这两个特性:
目前来看,代理对象小红已经能够代理购买香水了,但有一天,小红的另外一个朋友小何来了,「他想购买最纯正的法国红酒」,国内没有这样的购买渠道,小红刚巧也在法国,于是小何就想找小红帮他买红酒啦,这和小明找小红是一个道理的,都是想让小红做代理。 但问题是:在程序中,小红只能代理购买香水,「如果要代理购买红酒」,要怎么做呢?
这个故事是最典型的代理模式,代购从供应商购买货物后返回给调用者,也就是需要代理的小明。 代理可以分为静态代理和动态代理两大类: 「静态代理」
小红现在只是代理香水,如果小明需要找小红买法国红酒,那小红就需要代理法国红酒了,但是静态代理去扩展代理功能「必须修改小红内部的逻辑,这会让小红内部代码越来越臃肿」,后面会详细分析。 「动态代理」
如果小明需要找小红代理红酒,我们「无需修改代理类小红的内部逻辑」,只需要关注扩展的功能点:「代理红酒」,实例化新的类,通过一些转换即可让小红「既能够代理香水也能够代理红酒」了。 本文将会通过以下几点,尽可能让你理解 Java 代理中所有重要的知识点: 学习代理模式(实现故事的代码,解释代理模式的类结构特点) 比较静态代理与动态代理二者的异同 Java 中常见的两种动态代理实现(JDK Proxy 和 Cglib) 动态代理的应用(Spring AOP) 代理模式
(1)我们定义好一个「售卖香水」的接口,定义好售卖香水的方法并传入该香水的价格。 (编辑:淮南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |