3

关于事件驱动的编程模型。通常雇主会提出“在没有任何外部库的情况下用 Java 模拟事件驱动的编程模型”的问题。我认为这是一个简单的问题,可以使用设计模式来回答。

我的解决方案是有 2 个队列作为发布订阅(又名观察者)通道。发布通道将注册针对特定事件类型的事件,例如点击。

轮询元素 -> 按钮 1 单击 || 按钮 1 再次单击 || 按钮 1 单击特定时间。<- 发布者队列

另一个订阅通道将存储事件侦听器,如果出现新的发布,

轮询元素 -> 侦听器 1 || 听者 2 || -<订阅者队列。

它将首先推入发布队列并在另一时间轮询它允许订阅者消费。订阅将使用发布者元素并应用于订阅者通道中的每个元素(在本例中为每个事件侦听器)。观察者设计模式允许组件不可知论。发布者对订阅者一无所知。

此方案类似于电子邮件通讯订阅。

在 OO 实现中,会有 Publishers 对象和 Subscribers 类。实际上是详细的发布者实现和详细的订阅者实现的队列。还结合了调解器设计模式来协调发布者类和订阅者类。

我的解决方案有任何缺陷吗?

4

1 回答 1

0

不,不是。您的解决方案非常标准且合理。

基本事件的观察者/订阅者和中介者(如果您需要以特定顺序协调发送事件)。

于 2012-11-05T15:33:52.117 回答