2021/9/5 (代理模式)
安装了zsh的插件,高亮与命令补全。
Begin学习AOP,复习静态代理和动态代理:
动态代理:在程序的运行过程中,利用jdk的反射机制,创建代理类对象,并动态的指定要代理的目标类。
动态代理 底层就是反射 反射是一种解释性操作需要告诉虚拟机怎么怎么做 所以效率不算很高
Point
温习反射:利用反射创建对象的三种方式:
//1.源头:获取Class对象,用三种方式
Phone iPhone=new Phone();
//1.1.对象.getClass();获取对象
Class<?> clazz1 = iPhone.getClass();
//1.2.类.class
clazz1=Phone.class;
//1.3.Class.forName("包名.类名");
clazz1 = Class.forName("test.Phone");
//2.创建对象
//2.1通过newInstence()
Phone instance1 = (Phone) clazz1.newInstance();
//2.2先调用构造器,再通过newInstence()创建
Object instance2 = clazz1.getConstructor().newInstance();
条件:
jdk动态代理,必须有接口,目标类必须实现接口,没有接口,需要使用cglib动态代理。
动态代理要用到reflect 类中的InvocationHandler & method & Proxy 三大类
动态代理学习资料:
https://www.bilibili.com/video/BV1HZ4y1p7F1?p=17&spm_id_from=pageDriver