1. 程式人生 > >觀察者模式,釋出訂閱和事件驅動程式設計

觀察者模式,釋出訂閱和事件驅動程式設計

觀察者模式三要素:  目標-->貓     觀察者--->老鼠、人      事件-- >貓大叫一聲 

目標內部有個容器,註冊觀察者

在java.util中observable實現了觀察者模式, 有個vector類屬性是一個數組,把所有觀察者都放在裡面 .有個observer(觀察者).update方法觸發自己的行為,觀察是需要註冊,通過obs.addElement()方法註冊,當發生事件的時候, 去通知觀察者,有個notify方法. 

釋出訂閱模式是觀察者模式衍生出來的

四要素  釋出者   訂閱者   事件   事件通道  

 

 

 

 

 

事件驅動程式設計最好的方法論是釋出訂閱模式 

 

在java.util.中提供了eventlisten介面,對事件程式設計的介面

spring支援:

applicationcontext 繼承applicationEventPublisher 介面(對事件的支援),有兩個方法上面是對容器內部的

  有兩個方法 第一個是對容器內部事件, 第二個是對業務事件,容器內部事件就是容器的生命週期

 

 

預定酒店業務  ,下訂單是核心業務,傳送短息和傳送郵件是增值業務,在酒店類中不應該混合著傳送簡訊和傳送郵件業務用事件繫結在一起,不符合單一職責

 

正確的程式碼: 在酒店類中 注入 applicationContext ,呼叫publishEvent*()方法, 在簡訊類和郵件類方法上加@EventListenner 註解被消費

在配置檔案加上事件廣播器  

上圖就是事件通道神祕人物,利用多執行緒,保證在執行期解耦,主執行緒做主業務,其它執行緒做副業務.

&n