1、观察者概念:
一个对象发生改变,可以通知给其他所有
对象
2、观察者应用场景
1、zk临时节点监听
当zk临时节点发生改变,会通知给所有客户端
2、分布式配置中心
nacos config 刷新配置
3、多渠道群发
addOrder();
//1、向数据库插入订单数据
//2、发送短信代码
//3、发送邮件代码
sendMsg();
sendEmail()
sendWechat();
短信 邮件
3、流程图
4、代码实战(一)
1、观察者抽象类
2、短信通知、邮件通知
3、注册观察者 普通类
优化:线程池异步通知
4、项目启动成功开始注册到集合
优化:java反射
机制获
取observer下所有子类
注册到集合中
5、调用
通知单独开一个线程:
5、基于spring事件通知 代码实战(二)
1、
2、
运行结果:同步发送短信、邮件 (线程名相同)
6、上节cglib补充
jdk动态代理:基于接口实现
CGLIB动态代理:基于目标对象生成代理类
fastClass机制
JDK调用目标方法: 采用反射机制
CGLIB调用目标方法: 效率高