Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
醒狮指南
JavaGuide
提交
4c3a4644
J
JavaGuide
项目概览
醒狮指南
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4c3a4644
编写于
8月 12, 2020
作者:
G
guide
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update reamde
上级
de6647cf
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
10 addition
and
5 deletion
+10
-5
README.md
README.md
+2
-2
docs/java/basic/java-proxy.md
docs/java/basic/java-proxy.md
+8
-3
未找到文件。
README.md
浏览文件 @
4c3a4644
...
...
@@ -34,11 +34,11 @@
<tr>
<td
align=
"center"
valign=
"middle"
>
<a
href=
"https://mp.weixin.qq.com/s/li9_YXNVxan6Qgt3Q9FYqA"
>
<img
src=
"
./media/sponsor
/wangyi.png"
style=
"margin: 0 auto;width:450px"
/></a>
<img
src=
"
https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8
/wangyi.png"
style=
"margin: 0 auto;width:450px"
/></a>
</td>
<td
align=
"center"
valign=
"middle"
>
<a
href=
"https://kaiwu.lagou.com/course/courseInfo.htm?courseId=374&decorateId=82d9388505f147cbae5de546aeb0466e&utm_campaign=gongzhonghaolyw&utm_medium=koushuang&utm_source=weixinlyw#/content"
>
<img
src=
"
./media/sponsor
/lagou.jpeg"
style=
"margin: 0 auto;width:450px"
/></a>
<img
src=
"
https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8
/lagou.jpeg"
style=
"margin: 0 auto;width:450px"
/></a>
</td>
</tr>
</tbody>
...
...
docs/java/basic/java-proxy.md
浏览文件 @
4c3a4644
...
...
@@ -19,6 +19,7 @@
-
[
3.2.3. 代码示例
](
#323-代码示例
)
-
[
3.3. JDK 动态代理和 CGLIB 动态代理对比
](
#33-jdk-动态代理和-cglib-动态代理对比
)
-
[
4. 静态代理和动态代理的对比
](
#4-静态代理和动态代理的对比
)
-
[
5. 总结
](
#5-总结
)
<!-- /code_chunk_output -->
...
...
@@ -405,8 +406,6 @@ send message:java
after method send
```
> 源码地址:[https://github.com/Snailclimb/guide-rpc-framework-learning/tree/master/src/main/java/github/javaguide/dynamicProxy](https://github.com/Snailclimb/guide-rpc-framework-learning/tree/master/src/main/java/github/javaguide/dynamicProxy) 。
### 3.3. JDK 动态代理和 CGLIB 动态代理对比
1.
**JDK 动态代理只能只能代理实现了接口的类,而 CGLIB 可以代理未实现任何接口的类。**
另外, CGLIB 动态代理是通过生成一个被代理类的子类来拦截被代理类的方法调用,因此不能代理声明为 final 类型的类和方法。
...
...
@@ -415,4 +414,10 @@ after method send
## 4. 静态代理和动态代理的对比
1.
**灵活性**
:动态代理更加灵活,不需要必须实现接口,可以直接代理实现类,并且可以不需要针对每个目标类都创建一个代理类。另外,静态代理中,接口一旦新增加方法,目标对象和代理对象都要进行修改,这是非常麻烦的!
2.
**JVM 层面**
:静态代理在编译时就将接口、实现类、代理类这些都变成了一个个实际的 class 文件。而动态代理是在运行时动态生成类字节码,并加载到 JVM 中的。
\ No newline at end of file
2.
**JVM 层面**
:静态代理在编译时就将接口、实现类、代理类这些都变成了一个个实际的 class 文件。而动态代理是在运行时动态生成类字节码,并加载到 JVM 中的。
## 5. 总结
这篇文章中主要介绍了代理模式的两种实现:静态代理以及动态代理。涵盖了静态代理和动态代理实战、静态代理和动态代理的区别、JDK 动态代理和 Cglib 动态代理区别等内容。
文中涉及到的所有源码,你可以在这里找到:
[
https://github.com/Snailclimb/guide-rpc-framework-learning/tree/master/src/main/java/github/javaguide/proxy
](
https://github.com/Snailclimb/guide-rpc-framework-learning/tree/master/src/main/java/github/javaguide/proxy
)
。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录