一、设计模式是什么

设计模式是一些解决固定问题的方法,至今有23种设计模式

二、设计模式_代理模式

1.概念

  • 真实对象:被代理的对象
  • 代理对象:代理真实对象的对象
  • 代理模式:代理对象代理真实对象,以达到增强真实对象功能的目的

2.实现方式

  1. 静态代理:有一个类文件藐视代理模式
  2. 动态代理:在内存中形成代理类

三、动态代理

1.实现步骤

  1. 代理对象和真实对象实现相同的接口
  2. 代理对象 = Proxy.ProxyNewInstance( );
  3. 使用代理对象调用方法
  4. 增强方法

2.代码实现

QQ图片20200717171722.png
QQ图片20200717211820.png

到这里,调用的方法并没有执行,这是为什么呢?我们继续……


因为代理对象其实并没有真实对象的方法,没办法自己去调用!只能在invloke方法里通过真实对象才能调用!如:
QQ图片20200717212927.png

好了,明白了这个之后,我们来了解如何在invoke里增强真实对象的方法:


3.增强方式

  • 增强参数列表
  • 增强返回值类型
  • 增强方法体执行逻辑

QQ图片20200717215328.png
QQ图片20200717215330.png
可以看到,虽然第四步使用代理对象调用sale方法,但是由于在invoke方法里,增强了参数列表、返回值、方法体,所以,最后输出的结果和真实对象里的sale方法就完全不一样了!增强了!