最近早上地鐵上一直看設計模式,**中卻使用不上,今天恰好碰到乙個新需求,感覺和發布訂閱模式有點相同,借用了一下理念,雖然**寫的很爛,但是還是第一次去試著用設計模式,記錄一下成長的第一步。
需求大概是,往前端推送資料的時候,因為涉及到整個北京市的資料和北京市各個地區的資料,當前端不給我傳送請求的時候,我這邊是正常推整個北京市新增的資料,而當前端給我傳送請求的時候,會帶著某個區的行政編碼,這時候我傳送整個北京市資料就要停止,轉而給推送這個區的資料,而當前端發請求通知我改為整個北京市資料的時候,再次改變,我把前端的請求當做通知者,根據請求的不同改變查閱的狀態,把我的推送當做訂閱者,根據發布者查閱狀態的變化,推送不同的資料。
通知者**如下
@restcontrollerpublic
class
zonesubject
public
void
updatestate()
public
void
gettip(@pathvariable integer zone)
觀察者**如下
@component(value = "zoneobserver")public
class zoneobserver extends
observer
public
void
sendtip(string type)
else
else}}
}
其餘地方呼叫觀察者的sendtip()方法時,就會給推送對應的資料了。
發布 訂閱模式
發布 訂閱模式又叫觀察者模式,它定義物件間的一種一對多的關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都將得到通知。在js中,我們一般用事件模型來替代傳統的發布 訂閱模式。實現 varpubsub function p 訂閱 p.subscribe function flag,fn 發布 p....
發布訂閱模式
不同的語言,相同的模式。最近在關注設計模式的知識,發布訂閱模式其實是物件間一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴與它的物件都將得到狀態改變的通知。作用 1 廣泛應用於非同步程式設計中 2 物件間鬆散耦合的編寫 自定義事件 let corp 定義乙個公司物件 這裡放乙個列表來緩衝回掉函...
發布訂閱模式
前言 應用場景 專案做久了以後會越來越大,當很多人去做同乙個人專案的時候,裡面的邏輯耦合度當然是越低越好,有這麼乙個場景 需求 3個人同時開發乙個專案的時候,分別開發登入模組login 商品模組showshoplist 書籍模組showbooklist 當使用者登入成功的時候,需要使用者資訊去重新整...