简答电子商务网站建设流程,企业网站后台管理,浙江做公司网站多少钱,建站 wordpress因为需要看spring源代码#xff0c;看到代理这个词看不懂#xff0c;后面顺着线索发现需要学习一下设计模式的动态代理#xff0c;然后疯狂补课#xff0c;结果发现#xff0c;都不知道在说什么例子给的也比较抽象#xff0c;好在自己付出快4小时还是有一些微弱的感悟的。…因为需要看spring源代码看到代理这个词看不懂后面顺着线索发现需要学习一下设计模式的动态代理然后疯狂补课结果发现都不知道在说什么例子给的也比较抽象好在自己付出快4小时还是有一些微弱的感悟的。写一写免得自己忘记也可以帮一帮码友。
首先是例子我发现其他博客写的例子也就是什么中介什么租房子根本感觉不适合理解他的本质他虽然能够快速理解三方但是我一直没明白内核。
他的内核实际上非常的简单就是我有一个代码A但是我现在需要针对代码A执行之后我需要立即执行一下代码B。或者在代码A之前我一定要执行代码A那简单直接B CV一下到代码A不就完了。
不行 不够优雅~ 其实只是破坏了软件开发原则尽量让自己已经写完的代码尽量不去修改。 所以这时候要一个代理 所以他要完成的工作就是在代码A之上完成代码B。也就是完全不动已经原有的代码新增一个代理类就能够实现。
所以在结合什么中介那三个模型你就能够明白被代理的实际上就是不想改代码的A也就是房东proxy也就是中介调用者也就是租客。
但最重要的是lz就是不想改A代码我就是要写增量式 这个才是核心是目标也是我个人认为为啥要有代理模式。。。
好了明白这个原理去看别人写的代码就好理解很多很多很多了。
这里贴两个个人觉得写的比较好的博客 https://blog.csdn.net/Passer_hua/article/details/122617628 https://blog.csdn.net/m0_51380306/article/details/119912574
我个人插一嘴我并没有get到静态代理跟直接JDK使用的动态代理有什么区别。 因为我的理解是从代码编码角度来说我都是做到了代码A不动新增一个类然后PSVM执行写一写。 完了我看到那个博客说的是在生成代理不同确实因为静态代理中我们编写的实际上就是代理类但是在JDK里面反而不是相当于只是一个Factory类似的东西最终的代理是在proxy.newinstance那边生成的。 但在我看来我还是没有太感受到他们之间的差别。 写着突然感觉可以猜到应该是在proxy第二个参数那边传入接口数组那边可能能写个花的。。但我现在还参透不了。 有大神希望解答一下谢谢~