文章出處

返回目錄

再說概念

這兩個模式確實有點相似,都為了實現程序的解耦產生的,觀察者一般又稱發布/訂閱模式,它一般是有一個主題對象,然后有多個訂閱者去關注它,當它的狀態發生變化時,會自動通知這些訂閱者;而消費者模式類似一個緩存隊列的概念,它也稱為生產者/消費者模式,生產者只負責生產數據不去做處理(緩解高并發的問題),而消費者只從消費中間件里拿到所要處理的數據,并進行相應的邏輯處理工作,生產者與消費者是相互不知道對方的存在的,或者說他們可以是不同平臺的,不同語言的,即解耦的!

圖像中的消費者模式

 

圖像中的觀察者模式

而對于分布式的觀察者模式,也有比較直觀的圖像

在實際應該中,我們也會把觀察者(發布/訂閱)做成多個發布,一個訂閱的變態模式,當然,大叔認為他們是可以多對多的。

觀察者模式與消費者模式的區別

訂閱者肯定是個消費者,但消費者不一定是訂閱者,發布者一定是個生產者,但生產者不一定是個發布者。

訂閱發布者模式有時也稱為觀察者模式,訂閱發布者(觀察這和被觀察者)存在著主動 被動的關系,而生產者消費者比較中性吧。 訂閱發布模式定義了一種一對多的依賴關系,讓多個訂閱者對象同時監聽某一個主題對象。這個主題對象在自身狀態變 化時,會通知所有訂閱者對象,使它們能夠自動更新自己的狀態。而生產者消費者關系可以是1對1,1對多,多對1,多對多關系

在23種設計模式中的觀察者模式中,并沒有中間介-隊列的概念,但生產者消費者模式再多線程環境下好像天生就有隊列的概念。在訂閱發布者之間引入消息隊列后,可以實現訂閱者和發布者之間的解耦,任務可以很好的以異步方式進行處理,所以說是否有中間隊列不是訂閱發布者模式和生產者消費者模式的區別!

 

返回目錄

 


文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()