【发布时间】:2012-10-18 10:13:27
【问题描述】:
关于事件驱动的编程模型。通常雇主会提出“在没有任何外部库的情况下用 Java 模拟事件驱动的编程模型”的问题。我认为这是一个简单的问题,可以使用设计模式来回答。
我的解决方案是有 2 个队列作为发布订阅(又名观察者)通道。发布通道将注册针对特定事件类型的事件,例如点击。
投票元素 -> 按钮 1 点击 ||按钮 1 再次单击 ||按钮 1 单击特定时间。
另一个订阅通道将存储事件侦听器,如果出现新的发布,
poll 元素 -> 监听器 1 ||听者 2 || -
它将首先推入发布队列并在另一时间轮询它允许订阅者消费。订阅将使用发布者元素并应用于订阅者通道中的每个元素(在本例中为每个事件侦听器)。观察者设计模式允许组件不可知论。发布者对订阅者一无所知。
这种情况类似于电子邮件通讯订阅。
在OO实现中,会有Publishers对象和Subscribers类。实际上是详细的发布者实现和详细的订阅者实现的队列。此外,还引入了 Mediator 设计模式来协调发布者类和订阅者类。
我的解决方案有什么缺陷吗?
【问题讨论】:
标签: java design-patterns event-driven