自学Java第123天

2020-08-30  本文已影响0人  刘小爱

AOP面向切面编程的学习

以前也学过很多种面向XX编程
比如面向过程编程,面向对象编程
这两种也就是C语言和Java语言的区别

后面Java又学了面向接口编程
今天又学到了面向切面编程
说来说去最终还是得面向搜索引擎编程:
面向百度编程、面向谷歌编程

面向开发文档编程
面向老板的口述编程
……等等等等,各种各样的吐槽都有

那这个面向切面编程到底是干嘛的呢?
通俗简单小白式的理解就是:
能够对某个对象的某个方法功能增强
同时对这个方法本身没有任何修改

大概举一个例子说明下:
比如吃汉堡,里面有生菜、肉片…等等
但是我发现这个生菜不好吃

于是我把这个汉堡给切开
将生菜取了出来,加了点老干妈
再将生菜放回去,发现好吃了不少

这个过程就是面向切面编程:
汉堡就是一个目标对象
生菜就是对象的方法中需要增强的方法
给它增强了一个什么功能呢?
给它加了点老干妈,更好吃了

但是对生菜本身并没有产生修改
这个要这么理解,不能太严谨
什么叫对生菜本身产生修改?

比如我把它拿出来用油炸了一下
同时加了佐料,也更好吃了
但是这样对生菜本身也产生修改了

当然这个例子可能不太准确
但大致就是这么个意思
我学这块知识点的时候就是这么理解的
不然太抽象了,比较难弄懂

说白了就是对方法的增强
继承也可以实现该功能
但是继承会对方法本身产生修改

而面向切面编程不仅增强了方法
同时还没对方法本身产生修改
那它是怎么实现的呢?就是利用动态代理

​对动态代理也进行了全方位的再次回顾
当初学的时候觉得难的不行
现在回头来看确实好理解了不少

本质上就是Proxy类中的一个静态方法
newProxyInstance(),其有三个参数
将这些参数完全弄懂了,动态代理也就差不多了

上一篇下一篇

猜你喜欢

热点阅读