AOP
1.背景
我们在开发程序时,通常会将日志写在方法里,但是这样会产生两个问题:
1)核心业务代码和日志混合在一起,在开发时会分散精力。
2) 日志分散在各个业务功能方法中,不利于统一维护
2.解决思路
解决这两个问题的核心就是解耦。我们需要把附加功能从业务功能代码中抽取出来。
3.困难
要抽取的代码在方法内部,靠以前抽取重复的代码部分到父类的方式没法解决。所以要引入新的技术,也就是代理模式 。
它的作用是提供一个代理类,让我们在调用目标方法的时候,不是直接调用目标方法,而是通过代理方式间接调用。让不属于目标方法的核心逻辑代码从目标方法中剥离出来,以达到解耦的操作。
代理模式分为静态代理和动态代理
1)静态代理
这种方式确实是实现了解耦的操作,但是代码都写死了,完全不具备任何的灵活性。将来其他地方也需要附加日志,那还得再声明更多个静态代理类。那就产生了大量重复的代码,日志功能还是分散的,没有统一的管理。
2)动态代理
1.静态代理类是会建立多个的,因为代码都写死了。而动态代理类是只会有一个。不管你是什么类,什么接口,如下图所有,这个逻辑就是在目标方法前、目标方法后都会执行日志操作。

如何做:
1.创建一个动态代理类ProxyFactory,
2.在该类中传入目标对象,使用构造函数的方式赋值
3.定义一个返回代理对象的方法

本文探讨了在开发过程中如何通过AOP(面向切面编程)解决日志分散和核心业务代码混杂的问题,介绍了静态代理和动态代理的区别,重点讲解了如何使用动态代理实现代码解耦并统一管理日志功能。
2429

被折叠的 条评论
为什么被折叠?



