Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用基本设计模式模拟Java中的事件驱动编程模型_Java_Design Patterns_Event Driven - Fatal编程技术网

用基本设计模式模拟Java中的事件驱动编程模型

用基本设计模式模拟Java中的事件驱动编程模型,java,design-patterns,event-driven,Java,Design Patterns,Event Driven,关于事件驱动编程模型。通常,雇主会提出“在没有任何外部库的情况下用Java模拟事件驱动编程模型”的问题。我认为这是一个简单的问题,可以用设计模式来回答 我的解决方案是使用2个队列作为发布-订阅(又名.observer)通道。发布频道将注册针对特定事件类型的事件,如单击 轮询元素->按钮1单击| |按钮1再次单击| |按钮1单击特定时间。侦听器1 | |侦听器2 | |-

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

我的解决方案是使用2个队列作为发布-订阅(又名.observer)通道。发布频道将注册针对特定事件类型的事件,如单击

轮询元素->按钮1单击| |按钮1再次单击| |按钮1单击特定时间。侦听器1 | |侦听器2 | |-<订户队列

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

此场景类似于电子邮件时事通讯订阅

在OO实现中,将有publisher对象和Subscribers类。实际上是详细发布者实现和详细订阅者实现的队列。此外,还引入了中介器设计模式来协调发布者类和订阅者类


我的解决方案有缺陷吗?

没有,没有。您的解决方案非常标准和合理


如果您需要按特定顺序协调发送事件,请提供基本事件的观察者/订阅者和调解者。

请考虑:&