2016-05-31 80 views
0

我知道註冊接收回調消息的對象通常被命名爲偵聽器(如在PaintListener,PropertyListener中)或觀察者(如在ScopeObserver,TileObserver中)。聽衆和觀察者之間有概念上的區別嗎?

我也知道兩者通常都是GoF Observer模式的實現。

我的問題是:命名一個類時,有稱這是myListener的和MyObserver之間的任何概念上的差異?

編輯:這一塊的重複引用的建議確實問題解決了同樣的問題,但沒有答案的澄清對我來說。甚至沒有選擇一個。

我不想知道聽衆是否可以被看作是觀察員GoF的實現。我想知道在選擇一個名字時是否有任何語義推理。

對原始問題的評論,我的理解是發佈爲笑話,聽起來就像我期望的答案是:「在前者中,一個代碼監視另一個移動代碼,而後一個代碼用於偵聽任何噪聲的其他代碼。

+1

[Observer Design Pattern vs「Listeners」]的可能重複(http://stackoverflow.com/questions/3358622/observer-design-pattern-vs-listeners) – jaco0646

回答

2

記住,這是視主觀點。

英語不是我的主要語言,但這兩個術語都給我積極觀察可以感知的事物的相同想法。

然而,對於人類,至少(我可以用我的主要語言的影響),我們往往會看到一些具體的事情,而我們平時聽的一切,除非我們集中精力好。

適用於OOP,還有我的想法是,這些條款可能是可互換槽口。然而,我更傾向於使用術語「觀察者」來命名一個觀察具體給定/已知對象的對象,而「聽衆」來命名不知道其目標的對象。

向該技術上更說明:

  • 觀察員:所述Mouse手錶一個(或多個)Cat。該Mouse是一個貓知道所有的貓鄰居。
  • 聽衆Mouse手錶事件cat_in_sight發生。該Mouse是一個貓觀察員的觀察員,並不知道所有可能觸發此事件的貓。

這樣,這個聽衆有更少的責任感謝中間層(在這種情況下Event類也許)。我們也可以想像給這個責任貓:

  • 監聽:在Cat知道在附近所有的鼠標,每當談到附近通知他們。 A Mouse是一個貓聽衆,因爲它不知道貓( - >貓「註冊」鼠標本身)。

然而貓(觀察到的)在這種情況下有更多的責任。

我不知道我是否足夠清楚,我希望它有幫助。 :-)

相關問題