您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

01 發布者訂閱模式是什么(觀察者模式和發布-訂閱模式的區別)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-04-30 00:32:09【】3人已围观

简介觀察者模式和發布-訂閱模式的區別【1】定義觀察者模式定義了對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都將得到通知,并自動更新。觀察者模式屬于行為型模式,行為型模式關注

觀察者模式和發布-訂閱模式的區別

【1】定義

觀察者模式定義了對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都將得到通知,并自動更新。觀察者模式屬于行為型模式,行為型模式關注的是對象之間的通訊,觀察者模式就是觀察者和被觀察者之間的通訊。觀察者模式有一個別名叫“發布-訂閱模式”,或者說是“訂閱-發布模式”,訂閱者和訂閱目標是聯系在一起的,當訂閱目標發生改變時,逐個通知訂閱者。

【2】案例

【3】主要解決的問題

一個對象狀態改變給其他對象通知的問題,而且要考慮到易用和低耦合,保證高度的協作。

【4】優點

【5】缺點

【1】介紹

其實24種基本的設計模式中并沒有發布-訂閱模式,上面也說了,他只是觀察者模式的一個別稱。但是經過時間的沉淀,似乎他已經強大了起來,已經獨立于觀察者模式,成為另外一種不同的設計模式。在現在的發布訂閱模式中,稱為發布者的消息發送者不會將消息直接發送給訂閱者,這意味著發布者和訂閱者不知道彼此的存在。在發布者和訂閱者之間存在第三個組件,稱為消息代理或調度中心或中間件,它維持著發布者和訂閱者之間的聯系,過濾所有發布者傳入的消息并相應地分發它們給訂閱者。

【2】案例

【3】優點

【4】缺點

【5】主要解決問題

發布-訂閱模式是前端常用的一種設計模式,現在主流的MVVM框架,都大量使用了此設計模式,其主要作用有以下兩點:

前端的事件綁定有三要素:

從表面上看:

往更深層次講:

從使用層面上講

觀察者模式和發布/訂閱模式的區別

觀察者(Observer)模式又名發布-訂閱(Publish/Subscribe)模式。GOF給觀察者模式如下定義:定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。

在這里先講一下面向對象設計的一個重要原則——單一職責原則。因此系統的每個對象應該將重點放在問題域中的離散抽象上。因此理想的情況下,一個對象只做一件事情。這樣在開發中也就帶來了諸多的好處:提供了重用性和維護性,也是進行重構的良好的基礎。

因此幾乎所有的設計模式都是基于這個基本的設計原則來的。觀察者模式的起源我覺得應該是在GUI和業務數據的處理上,因為現在絕大多數講解觀察者模式的例子都是這一題材。但是觀察者模式的應用決不僅限于此一方面。

下面我們就來看看觀察者模式的組成部分。

1) 抽象目標角色(Subject):目標角色知道它的觀察者,可以有任意多個觀察者觀察同一個目標。并且提供注冊和刪除觀察者對象的接口。目標角色往往由抽象類或者接口來實現。

2) 抽象觀察者角色(Observer):為那些在目標發生改變時需要獲得通知的對象定義一個更新接口。抽象觀察者角色主要由抽象類或者接口來實現。

3) 具體目標角色(Concrete Subject):將有關狀態存入各個Concrete Observer對象。當它的狀態發生改變時, 向它的各個觀察者發出通知。

4) 具體觀察者角色(Concrete Observer):存儲有關狀態,這些狀態應與目標的狀態保持一致。實現Observer的更新接口以使自身狀態與目標的狀態保持一致。在本角色內也可以維護一個指向Concrete Subject對象的引用。

觀察者模式和發布訂閱模式區別

2019-03-06-12:31 午飯吃完啦~

觀察者模式和發布訂閱模式最大的區別就是發布訂閱模式有個事件 調度中心 !!!

觀察者模式中觀察者和目標直接進行交互,而發布訂閱模式中統一由 調度中心 進行處理,訂閱者和發布者 互不干擾 。這樣一方面實現了 解耦 ,還有就是可以實現更細粒度的一些控制。比如發布者發布了很多消息,但是不想所有的訂閱者都接收到,就可以在 調度中心 做一些處理,類似于 權限控制之類的。

為方便記憶,關鍵字:調度中心、解耦(發布/訂閱者互不干擾)

觀察者模式 vs 發布-訂閱模式

差異總結:

1. 在觀察者模式中,觀察者 (Observer) 是知道Subject的,Subject一直保持對觀察者進行記錄。然而,在發布訂閱模式中,發布者 (Publisher) 和訂閱者 (Subscriber) 不知道對方的存在。它們只有通過消息代理 ( 信息中介 ) 進行通信。

2. 在發布訂閱模式中,組件是松散耦合的,正好和觀察者模式相反。

3. 觀察者模式大多數時候是同步的,比如當事件觸發,Subject就會去調用觀察者的方法。而發布-訂閱模式大多數時候是異步的(使用消息隊列)。

4. 在觀察者模式中依賴于Subject 對象的一系列 Observer 對象在被通知之后只能執行同一個特定的更新方法,而在發布訂閱模式中則可以基于不同的主題去執行不同的自定義事件。

模型闡述:

觀察者模式里,觀察者(Observer)直接訂閱(subscribe)主題(Subject),而當主題被激活的時候,會觸發(fire)觀察者里的事件。

訂閱發布模式里,訂閱者(Subscriber)通過監聽(on)事件總線(Event Bus)里的事件,當事件總線里的事件被觸發(emit)的時候,訂閱者將會執行相應的操作。而這里需要注意的是,事件總線里的事件是通過發布者(Publisher)進行發布(publish)和 通知事件總線 觸發 的。

訂閱發布模式有哪些優點

優點

松耦合

發布者與訂閱者松耦合,甚至不需要知道它們的存在。由于主題才是關注的焦點,發布者和訂閱者可以對系統拓撲結構保持一無所知。各自繼續正常操作而無需顧及對方。在傳統的緊耦合的客戶端-服務器模式中,當服務器進程不運行時,客戶端無法發送消息給服務器,服務器也無法在客戶端不運行時接收消息。許多發布/訂閱系統不但將發布者和訂閱者從位置上解耦,還從時間上解耦他們。中間件分析師對這種發布/訂閱使用的常用策略,是拆卸一個發布者來讓訂閱者處理完積壓的工作(帶寬限制的一種形式)。

可擴展性

通過并行操作,消息緩存,基于樹或基于網絡的路由等技術,發布/訂閱提供了比傳統的客戶端–服務器更好的可擴展性。然而,在某些類型的緊耦合、高容量的企業環境中,隨著系統規模上升到由上千臺服務器組成的數據中心所共享的發布/訂閱基礎架構,現有的供應商系統經常失去這項好處;在這些高負載環境下,發布/訂閱產品的擴展性是一個研究課題。

什么是網上訂閱模式?

網上訂閱模式是指企業企業通過網頁向消費者消費者提供網上直接訂閱、直接信息瀏覽的電子商務電子商務模式。消費者通過網絡訂閱相關信息服務信息服務,并在網上支付網上支付相關費用,企業按用戶要求的時間,將相關的信息信息發送到用戶指定的地點,通常是用戶的信箱。該模式主要用來銷售報刊雜志、有線電視節目等,主要包括在線服務和在線出版、在線娛樂等。如中國郵政中國郵政就通過郵政183網站與新華社新華社主辦的新華網,推出報刊雜志的網上訂閱。

網上訂閱模式的類型

網上訂閱模式主要有以下幾種:①在線服務(Online Services)

在線服務是指在線經營商通過每月向消費者收取固定的費用而提供各種形式的在線信息服務。在線服務的共同特點是:

基礎信息的一步到位式服務。在線服務商一般都向訂戶提供基礎的信息服務。

客戶通過瀏覽在線服務商所提供的信息,基本上就可以滿足日常收集信息的要求。

可靠的網絡安全保障。由于在線服務都是在專有的網絡上運行,通過在線服務商聯接的網絡的安全保障比直接聯接國際互聯網要可靠。美國的一些銀行,如美洲銀行和聯合銀行就是通過網絡提供結算服務的。

向新訂戶提供支持服務系統。在線服務商既通過電腦網絡,又通過電話向新的訂戶提供支持服務。

②在線出版(Online Publications)

在線出版指的是出版商通過互聯網絡向消費者提供非紙介質的電子刊物。所謂在線一般是指僅在網上發布而言。消費者可以通過網上訂閱,下載刊物的信息。但是,但對一般消費者來說,通過網上訂閱銷售電子刊物被證明存在一定的困難,因為它們基本上可以從其他的途徑獲取相同或類似的信息。因此,在線出版模式主要靠廣告支持。

③在線娛樂(Online entertainment)

在線娛樂是無形產品和勞務在線銷售中令人注目的一個領域。一些網站向消費者提供在線游戲,并收取一定的訂閱費。目前看來,這一領域還比較成功。

[編輯]

網上訂閱模式的會計處理

網上訂閱模式下,從事電子商務的企業主要是提供影視娛樂節目、報刊雜志等并要求顧客付費的電子商務模式

。這一模式同付費瀏覽模式的相同點在于它們都沒有存貨數量,不同點在于它們所要求的支付的費用不同。網上訂閱模式所要求的價格要比網上瀏覽的價格貴很多。這一模式下的數字商品的價格同現實生活中有載體的商品的價格是相差無幾的,有時還可能會更高一點,客戶在網上購買是因為可以第一手獲得這件物品。而對于企業來說就不同了,在這一模式下,企業是作為銷售方而存在,并不是作為提供勞務而取得勞務費,取得的是銷售收入。由于是銷售商品,這就存在一個銷售收人和銷售成本的配比問題。因為在收入實現并結轉收人時,根據配比原則,商品的成本也要做相應的結轉,以保持收人與成本之間的對應關系。然而,企業的存貨數量為零,僅有的是企業放在企業網站上的一個版本,因而每一次銷售成立時,存貨成本是根本無法獲得的,結轉成本就成為一個很大的問題。因此,在銷售成立時,不立即確認為銷售收入,而是將這一筆錢先放入一個待處理數字商品科目,于月末一次性進行處理。對于存貨成本,可像無形資產核算一樣,在獲得數字商品時,將數字商品進人數字商品科目下的二級明細科目某一數字商品,于月末攤銷銷售成本。具體可由以下分錄來實現:

獲得某一數字商品時,

借:數字商品某一數字商品

貸:現金或銀行存款或電子貨幣銷售時,

借:現金或銀行存款或電子貨幣

貸:待處理數字商品

確定數字商品攤銷期,并于月末結轉收人和成本時,

借:待處理數字商品

貸:商品銷售收人

應交稅金應交增值稅

借:商品銷售成本貸:數字商品某一數字商品

很赞哦!(244)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:湖北恩施宣恩县

工作室:小组

Email:[email protected]