Update 代理模式详解.md

typo
This commit is contained in:
anaer 2021-09-01 10:54:55 +08:00 committed by GitHub
parent 4189bbe647
commit e534636ad9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 5 deletions

View File

@ -120,15 +120,15 @@ after method send()
**从 JVM 角度来说,动态代理是在运行时动态生成类字节码,并加载到 JVM 中的。**
说到动态代理Spring AOP、RPC 框架应该是两个不得不提的,它们的实现都依赖了动态代理。
说到动态代理Spring AOP、RPC 框架应该是两个不得不提的,它们的实现都依赖了动态代理。
**动态代理在我们日常开发中使用的相对较,但是在框架中的几乎是必用的一门技术。学会了动态代理之后,对于我们理解和学习各种框架的原理也非常有帮助。**
**动态代理在我们日常开发中使用的相对较,但是在框架中的几乎是必用的一门技术。学会了动态代理之后,对于我们理解和学习各种框架的原理也非常有帮助。**
就 Java 来说,动态代理的实现方式有很多种,比如 **JDK 动态代理**、**CGLIB 动态代理**等等。
[guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) 使用的是 JDK 动态代理,我们先来看看 JDK 动态代理的使用。
另外,虽然 [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) 没有用到 **CGLIB 动态代理 ,我们这里还是简单介绍一下其使用以及和**JDK 动态代理的对比。
另外,虽然 [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) 没有用到 **CGLIB 动态代理** ,我们这里还是简单介绍一下其使用以及和**JDK 动态代理**的对比。
### 3.1. JDK 动态代理机制
@ -154,7 +154,7 @@ after method send()
2. **interfaces** : 被代理类实现的一些接口;
3. **h** : 实现了 `InvocationHandler` 接口的对象;
要实现动态代理的话,还必须需要实现`InvocationHandler` 来自定义处理逻辑。 当我们的动态代理对象调用一个方法时,这个方法的调用就会被转发到实现`InvocationHandler` 接口类的 `invoke` 方法来调用。
要实现动态代理的话,还必须需要实现`InvocationHandler` 来自定义处理逻辑。 当我们的动态代理对象调用一个方法时,这个方法的调用就会被转发到实现`InvocationHandler` 接口类的 `invoke` 方法来调用。
```java
public interface InvocationHandler {
@ -298,7 +298,7 @@ extends Callback{
1. **obj** :被代理的对象(需要增强的对象)
2. **method** :被拦截的方法(需要增强的方法)
3. **args** :方法入参
4. **methodProxy** :用于调用原始方法
4. **proxy** :用于调用原始方法
你可以通过 `Enhancer`类来动态获取被代理类,当代理类调用方法的时候,实际调用的是 `MethodInterceptor` 中的 `intercept` 方法。