12.动态代理
参考的学习视频→ https://b23.tv/av47952931/p82 -特点 :字节码随用随创建,随用随加载 -作用 :不修改源码的基础上对方法增强 -分类 : 基于接口的动态代理 基于子类的动态代理 ▲基于接口的动态代理 -涉及的类 :Proxy -提供者 :JDK官方 -如何创建代理对象 :使用Proxy类中的newProxyInstance方法 -创建代理对象的要求 :被代理类最少实现一个接口,否则不能使用 -newProxyInstance方法的参数 : Classloader :类加载器 用于加载代理对象字节码,和被代理对象使用相同的类加载器(固定写法) Class[] :字节码数组 用于让代理对象和被代理对象有相同的方法(固定写法) InvocationHander :用于提供增强的代码 写如何代理,一般我们会写一个该接口的实现类,通常情况下为匿名内部类,但不是必须的 ▲示例 新建MAVEN工程,配置POM文件,规定打包形式为JAR 新建一个接口类 定义接口类IProducer IProducer接口定义了销售saleProduct和售后afterService两个方法 定义接口实现类Producer Producer继承IProducer接口并实现其方法 模拟一个消费者Client main函数中运用代理 运行结果 ▲基于子类的动态代理 -涉及的类