博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度分析代理模式
阅读量:4360 次
发布时间:2019-06-07

本文共 595 字,大约阅读时间需要 1 分钟。

目录

@(深度分析代理模式)

深度分析代理模式

  1. 掌握代理模式的应用场景
  2. 了解静态代理和动态代理的区别
  3. 了解CGLib和JDK Proxy的根本区别
  4. 手写实现定义的动态代理

内容定位

  • 都知道SpringAOP时用代理模式实现,到底是怎么实现的呢?
  • 自己仿真手写还原部分细节

代理模式的定义

代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制对这个对象的访问。

代理对象在客户端和目标对象之间起到中介作用。

属于结构型设计模式

生活中的代理模式

  • 房产中介
  • 快递小哥
  • 黄牛党

代理模式的使用场景

  • 保护目标对象
  • 增强目标对象

静态代理

  • 显示声明被代理对象

eg数据源路由:动态切换数据源

缺陷

不符合开闭原则,只要被代理的那个类需要新的代理,都需要在代理类中新加方法

动态代理($Proxy0)

  1. 拿到被代理类的引用,并且获取他所有的接口(反射获取)需要实现接口
  2. JDK Proxy类重新生成新的类,实现了被代理类所有接口的方法
  3. 动态生成Jav代码,把增强逻辑加入到新生成的代码中。
  4. 编译生成新的java代码的class文件
  5. 加载并重新运行新的class,得到的类就是全新的类

Proxy是一个用来生成新的代理类的工具类

1064870-20190526162346757-919340106.png

为什么这个类的接口的长度不能大于65535?

转载于:https://www.cnblogs.com/mengjie1001/p/10926451.html

你可能感兴趣的文章
Linux的用户态和内核态
查看>>
JavaScript原生错误及检测
查看>>
(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(3): 深度克隆clone()
查看>>
为什么写作
查看>>
整数子数组求最大和添加验证
查看>>
使用kubeadm安装Kubernetes
查看>>
Principal Component Analysis 主元分析
查看>>
linux分割字符串操作
查看>>
排序笔记
查看>>
一款纯css3实现的机器人看书动画效果
查看>>
加班与效率
查看>>
MyEclipse下SpringBoot+JSP整合过程及踩坑
查看>>
重定向和管道
查看>>
实验五
查看>>
STL学习笔记(第二章 C++及其标准程序库简介)
查看>>
Operator_countByValue
查看>>
Java 日期往后推迟n天
查看>>
Web应用漏洞评估工具Paros
查看>>
Git 和 Github 使用指南
查看>>
20180925-4 单元测试
查看>>