我處於一種情況,我想將一個對象發送給多個處理程序,但是某些程序使用其他處理程序生成的數據。這聽起來很不清楚 - 自己讀一下,我不認爲我會得到我在說的 - 所以我會舉個例子。在事件處理程序之間共享數據?
比方說,我有以下幾點:
interface ChangeListener
{
public add_change(Change)
// ...
}
class ListenerA implements ChangeListener{...}
class ListenerB implements ChangeListener{...}
,並在實際的邏輯正在發生:
List changes = ... // populated from somewhere else
List handlers = [new ListenerA(), new ListenerB()]
foreach(change in changes)
foreach(handler in handlers)
handler.add_change(change)
我的問題是什麼ListenerA將這樣做部分是創建一個URL我希望ListenerB有權訪問該URL(因此它可以使用它)。作爲一個具體的例子,ListenerA可以使用博客API來創建一個帖子,然後ListenerB可以發送一封包含該URL的郵件。
一個選擇是讓ListenerA使用新創建的URL向Change對象添加一個屬性,但我不確定我是否喜歡嘲笑該對象。另一種方法是簡單地按順序調用它們並傳入一個值(而不是循環),但我試圖保持這部分(發出更改)和嘗試並找出如何處理它們 - 以便將來添加一個ListenerC將需要添加一個對象到handlers
列表中。
有關最佳方法的任何想法?