AOP的通俗理解

https://www.cnblogs.com/baiduligang/p/4246976.html

面向对象编程更多的操作是在纵向部分(即继承,接口实现之类),这就导致一些需要在横向上(即业务代码方法中的前后)嵌入的非核心代码得在每一个方法上都要去写(比如日志,权限,异常处理等)。它们散布在各方法的横切面上,造成代码重复,也不利于各个模块的重用(毕竟,不同方法还是有所区别)。
AOP就是为了解决这种男题而生的
从AOP这个英文缩写来看就好。。。A是一把刀,把P的突出部分切出来(类比于围绕方法设定的日志,权限等需求,它们都是属于核心方法外的通用服务),它们有一个共性—-圆溜溜的(就像一个工具箱中的扳手,钳子,螺丝刀之类的),所以能把它们集合成一块儿(它们都具有’工具‘的属性),就是中间的O。重新给接回去的时候,就着不同的需求,用O中不同的工具就好(通过不同的方法或注解指明)。
概念陈列:
目标对象,AOP代理对象,连接点,切入点,拦截器,通知,织入,
假设有一个对象A(目标对象),外部的请求人B要想访问到A,需要通过一个安检过程(连接点,比如验证权限m1,登录密码m2,身份识别m3等)。B开始访问后,首先得经过第一层的安检(准备走谁(introductionInterceptor)的哪一层安检(PointCut–》指定到具体的安检流程),由你定义的interceptor拦截器决定),即权限验证m1(切入点)。通过这一层后,监控整个访问过程的你可以决定是否要向大家伙儿通报外部请求的访问情况【像:B那孙子进来啦 OR B那孙子带着贪玩蓝月系来嘞 OR B那小子是渣渣辉的部下】(在访问开始前,还是结束后,还是全程播报—->这就是’通知‘)。于A而言,他觉得直接跟B接触可能不太安全,所以A把自己的一些权限给到了代理对象Proxy_A,并让Proxy_A去正面’刚(也即织入,A间接的给自己加持了一副铠甲)‘B(或许是来者不善乜)。Proxy_A是怎样产生的呢?这就是AOP动态代理的辅助了。简单来讲,不论你是什么代理—》Proxy_某个目标对象,只要是通过JDK或者CGLib的代理副本传送门(类比于抽象)进入到刚B的’对战场景‘中,那么,他都算是A(或者其他目标对象)的代言人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值