我处于一种情况,我想将一个对象发送给多个处理程序,但是某些程序使用其他处理程序生成的数据。这听起来很不清楚 - 自己读一下,我不认为我会得到我在说的 - 所以我会举个例子。在事件处理程序之间共享数据?
比方说,我有以下几点:
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
列表中。
有关最佳方法的任何想法?