說說發布 訂閱模式

2021-08-31 21:17:39 字數 1033 閱讀 8532

對product類新增乙個字段,該欄位用來描述商品:

public class product 

public kind getdesc()

}

這個時候,我們需要分析一下,既然每個合作商家所需要的商品種類都不盡相同,那麼,通知者就需要有乙個排程中心,根據觀察者提供的資訊來決定是否推送。

ok,那麼我們第一步就需要讓觀察者提供乙個介面,該介面能返回該觀察者對什麼樣的推送「感興趣」:

listgetinterestedikindlist();
這裡的kind是對訂閱主題的抽象:

public enum kind 

kind(string desc)

}

該類是乙個列舉類。

for(observer observer:observerlist)

}

這就是我們的排程中心,**每秒生成乙個數碼產品,而只有對數碼產品感興趣的觀察者才會被通知。

最後再實現以下tmall和jd的介面:

tmall:

public listgetinterestedikindlist()
jd:

@override

public listgetinterestedikindlist()

tmall只對數碼產品感興趣,而jd只對食物感興趣。

執行結果:

天貓收到了商品推送:wang.ismy.observer.product@127ef002

天貓收到了商品推送:wang.ismy.observer.product@51c46efc

天貓收到了商品推送:wang.ismy.observer.product@44c6bd5a

天貓收到了商品推送:wang.ismy.observer.product@71a10228

....

發布 訂閱模式

發布 訂閱模式又叫觀察者模式,它定義物件間的一種一對多的關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都將得到通知。在js中,我們一般用事件模型來替代傳統的發布 訂閱模式。實現 varpubsub function p 訂閱 p.subscribe function flag,fn 發布 p....

發布訂閱模式

不同的語言,相同的模式。最近在關注設計模式的知識,發布訂閱模式其實是物件間一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴與它的物件都將得到狀態改變的通知。作用 1 廣泛應用於非同步程式設計中 2 物件間鬆散耦合的編寫 自定義事件 let corp 定義乙個公司物件 這裡放乙個列表來緩衝回掉函...

發布訂閱模式

前言 應用場景 專案做久了以後會越來越大,當很多人去做同乙個人專案的時候,裡面的邏輯耦合度當然是越低越好,有這麼乙個場景 需求 3個人同時開發乙個專案的時候,分別開發登入模組login 商品模組showshoplist 書籍模組showbooklist 當使用者登入成功的時候,需要使用者資訊去重新整...