Java AOP(面向切面编程)主要使用了代理模式来实现。代理模式允许在不修改原始类的情况下,通过创建一个代理类来扩展其功能。在Java中,AOP可以通过两种动态代理技术实现:JDK动态代理和CGLIB动态代理。
JDK动态代理:利用Java反射机制,实现InvocationHandler接口,创建代理类来拦截方法调用。
CGLIB动态代理:通过CGLIB库动态生成子类,实现所需的方法拦截。
Spring框架在实现AOP时也使用了代理模式,并且可能结合使用其他设计模式,如工厂模式、单例模式、观察者模式等,以提供更完整的功能。