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調用目標方法: 效率高