發(fā)布訂閱模式解釋

一、?訂閱雜志

我們很多人都訂過(guò)雜志,其過(guò)程很簡(jiǎn)單。只要告訴郵局我們所要訂的雜志名、投遞的地址,付了錢就OK。出版社定期會(huì)將出版的雜志交給郵局,郵局會(huì)根據(jù)訂閱的列表,將雜志送達(dá)消費(fèi)者手中。這樣我們就可以看到每一期精彩的雜志了。


仔細(xì)思考一下訂雜志的過(guò)程,我們會(huì)發(fā)現(xiàn)這樣幾個(gè)特點(diǎn):

1、?消費(fèi)者訂雜志不需要直接找出版社;

2、?出版社只需要把雜志交給郵局;

3、?郵局將雜志送達(dá)消費(fèi)者。

郵局在整個(gè)過(guò)程中扮演了非常重要的中轉(zhuǎn)作用,在出版社和消費(fèi)者相互不需要知道對(duì)方的情況下,郵局完成了雜志的

二、?發(fā)布-訂閱消息模式

剛剛講了訂閱雜志,下面我們會(huì)講傳統(tǒng)調(diào)用模式演化到發(fā)布-訂閱消息模式。

有些網(wǎng)站在注冊(cè)用戶成功后發(fā)一封激活郵件,用戶收到郵件后點(diǎn)擊激活鏈接后才能使用該網(wǎng)站。一般的做法是在注冊(cè)用戶業(yè)務(wù)邏輯中調(diào)用發(fā)送郵件的邏輯。這樣用戶業(yè)務(wù)就依賴于郵件業(yè)務(wù)。如果以后改為短信激活,注冊(cè)用戶業(yè)務(wù)邏輯就必須修改為調(diào)用發(fā)送短信的邏輯。如果要注冊(cè)后給用戶加點(diǎn)積分,再加一段邏輯。經(jīng)過(guò)多次修改,我們發(fā)現(xiàn)很簡(jiǎn)單的注冊(cè)用戶業(yè)務(wù)已經(jīng)越來(lái)越復(fù)雜,越來(lái)越難以維護(hù)。相信很多開發(fā)者都會(huì)有類似痛苦的經(jīng)歷。


即使用戶業(yè)務(wù)實(shí)現(xiàn)中對(duì)其他業(yè)務(wù)是接口依賴,也避免不了業(yè)務(wù)變化帶來(lái)的依賴影響。怎么辦?解耦!將注冊(cè)用戶業(yè)務(wù)邏輯中注冊(cè)成功后的處理剝離出來(lái)。

再回頭看看“訂閱雜志”,如果沒有郵局,出版社就必須自己將雜志送達(dá)所有消費(fèi)者。這種情形就和現(xiàn)在的注冊(cè)用戶業(yè)務(wù)一樣。我們發(fā)現(xiàn)問(wèn)題了,在用戶業(yè)務(wù)和其他業(yè)務(wù)之間缺少了郵局所扮角色。

我們把郵局抽象成一個(gè)管理消息的地方,叫“消息管理器”。注冊(cè)用戶成功后發(fā)送一個(gè)消息給消息管理器,由消息管理器轉(zhuǎn)發(fā)該消息給需要處理的業(yè)務(wù)?,F(xiàn)在,用戶業(yè)務(wù)只依賴于消息管理器了,它再也不會(huì)為了注冊(cè)用戶成功后的其他處理而煩惱。


注冊(cè)用戶的改造就是借鑒了“訂閱雜志”這樣原始的模式。我們?cè)龠M(jìn)一步抽象,用戶業(yè)務(wù)就是消息的“生產(chǎn)者”,它將消息發(fā)布到消息管理器。郵件業(yè)務(wù)就是消息的“消費(fèi)者”,它將收到的消息進(jìn)行處理。郵局可以訂閱很多種雜志,雜志都是通過(guò)某種編號(hào)來(lái)區(qū)分;消息管理器也可以管理多種消息,每種消息都會(huì)有一個(gè)“主題”來(lái)區(qū)分,消費(fèi)者都是通過(guò)主題來(lái)訂閱的。


發(fā)布-訂閱消息模式已經(jīng)呈現(xiàn)在我們面前,利用它可以產(chǎn)生更靈活、更松散耦合的系統(tǒng)。

參考鏈接:

1、發(fā)布-訂閱模式解釋:https://blog.csdn.net/coderyjz/article/details/79422267

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 每天進(jìn)步一點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)~~從開始只能寫幾句話、模仿別人的觀點(diǎn),到現(xiàn)...
    一個(gè)帥氣的名字呀閱讀 19,226評(píng)論 4 31
  • 消息隊(duì)列 什么是消息隊(duì)列(Message Queue,MQ)呢? 首先回憶下生活中在餐館點(diǎn)餐的場(chǎng)景,當(dāng)你點(diǎn)完餐之后...
    JunChow520閱讀 3,164評(píng)論 0 29
  • 發(fā)布—訂閱模式又叫觀察者模式,它定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都...
    yufawu閱讀 839評(píng)論 0 6
  • 對(duì)于法國(guó)文學(xué)家,好像只知道巴爾扎克,莫泊桑,雨果之類,對(duì)法國(guó)十九世紀(jì)文學(xué)先驅(qū)夏多布里昂居然一無(wú)所知,實(shí)為慚愧。幸而...
    梁夢(mèng)婷閱讀 1,558評(píng)論 2 13
  • 這次我們?nèi)ド_(dá)五明佛學(xué)院參加法會(huì),帶了三位老人,卻沒訂到酒店,因?yàn)檫@次法會(huì)有上萬(wàn)人參加,五明佛學(xué)院的場(chǎng)地緊張,住宿...
    覺醒的喵星人閱讀 1,718評(píng)論 1 3

友情鏈接更多精彩內(nèi)容