关于事件驱动的编程模型。通常,雇主提出的问题是“在没有任何外部库的情况下模拟Java中的事件驱动编程模型”。我认为这是一个简单的问题,可以回答设计模式的使用。
我的解决方案有2个队列作为发布订阅(aka。observer)频道。发布渠道将注册针对特定事件类型的事件,例如单击。
民意调查元素 - >按钮1单击||按钮1再次单击||按钮1单击特定时间。 < - 发布者队列
如果出现新的发布,另一个订阅频道将存储事件监听器
民意调查元素 - >听众1 ||听众2 || - <用户队列。
它将首先推入发布队列,并在另一个允许订阅者消费的时间轮询它。订阅将使用publisher元素并应用于订阅者通道中的每个元素(在本例中为每个事件侦听器)。观察者设计模式允许组件不可知。发布者对订阅者一无所知。
此方案类似于电子邮件简报订阅。
在OO实现中,将有Publishers对象和Subscribers类。实际上是详细的发布者实施和详细订阅者实现的队列。此外,Mediator设计模式也被用于协调发布者类和订阅者类。
我的解决方案有任何缺陷吗?
答案 0 :(得分:0)
不,不是真的。您的解决方案非常标准和合理。
基本事件的观察者/订阅者和Mediator,如果您需要按特定顺序协调发送事件。