簡體   English   中英

將主干與pub / sub分離

[英]Decoupling backbone with pub/sub

我正在修改使用骨干網/需求的方式,我發現很難將模塊耦合起來是多么糟糕的做法(當時我還不了解去耦合)。

我開始玩MinPubSub,並在很大程度上理解了這一點,但是從我閱讀的內容來看,其他模塊不應該訂閱其他模塊(這會使它耦合嗎?)。 相反,他們應該是所有模塊之間的中介者,這些模塊告訴他們如何進行交互。

我假定此調解器已訂閱所有模塊,而所有模塊都已訂閱了調解器?

我不知道如何實現此目標,但仍未找到有關如何使用主干實現此示例的可靠代碼示例,將pubsub添加到主干的任何幫助將不勝感激。

抱歉,這是一個普遍的問題,試圖繞過這個概念,並找到一個廣泛使用的示例。

咳咳。 pubsub方法中介者模式的一種實現。 您的調解員是您的pubsub處理程序。

讓我澄清一下。 在pubsub模型中,您注冊一個頻道並發布到該頻道。 那里任何可能在監聽的內容都將按照您訂閱的順序發布。

將此與中介者模式的正式定義進行對比:

使用中介者模式,對象之間的通信將與中介者對象一起封裝。 對象不再彼此直接通信,而是通過調解器進行通信。 這減少了通信對象之間的依賴性,從而降低了耦合。

(直接從您最喜歡的百科全書中摘錄

這對您意味着什么? 只要您不做我認識的人曾經做過的事情,就可以了。 絕對是您要避免的事情:

  1. 模塊使用自己的名稱注冊頻道
  2. 其他模塊通過在其頻道上發布以實名引用它

這是事件發布/訂閱模型崩潰的地方,因為它在理論上是分離的,但實際上,您需要知道模塊的確切名稱。 使事件具有足夠的通用性,以便可以在不丟失功能的情況下就地交換模塊,並防止/避免直接進入其他模塊,並且可以很好地進行耦合。

如果有任何不清楚的地方,請告訴我,我將嘗試澄清。

有趣的是,一個令我很高興的圖書館稱為Mediator

它在網站上有很多很好的例子,但是粗略地講:

$.getJSON('url/to/json', function(json) {
    mediator.publish('myData:loaded', {response: json});
});

// Somewhere else
mediator.subscribe('myData:loaded', function(json) {
    // Do something
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM