以下是问题陈述。
有n个匹配字符串,如果发生事件A,然后在某个时间段发生事件B,那么我不会发出警报。但如果B没有发生,那么我必须发出警报。 可能有多个事件链定义是否发出警报。
答案 0 :(得分:5)
答案 1 :(得分:0)
您的问题陈述适用于类似软件模块的级别。模块通常包含许多类,这些类将以不同的方式相互关联。模式提供了关于这些关系的两种观点,有时也提出了如何使用类之间的不同关系实现行为的建议。
可能会涉及某种状态机,不管这是一个简单的状态机,还是状态对象模式,或者是规则的解释器,还是通过使用访问者转换规则而创建的程序机器;是否通过轮询数据源或使用观察者来触发状态,以及系统是否可以由更简单的状态机组成,或者需要某种调度程序来同时运行多台计算机,所有这些都取决于比您的帖子中给出的更多细节。
答案 2 :(得分:0)
观察者模式:
var observer = new Observer();
var eventA = new EventA();
var eventB = new EventB();
eventA.register(observer, function() {
// set off alarm in N amount of time units
});
eventB.register(observer, function() {
// reset alarm
});
稍后eventA
和eventB
将为所有已注册的观察者调用notify()
,这将触发启动闹钟倒计时/重新设置闹钟的回调。
代码在pesudo-javascript中。如果您使用完整的javascript,只需在回调中使用setTimeout
和clearTimeout
。
我想我应该提一下,Pub / Sub模式(Observer是其子集)也非常好。
答案 3 :(得分:-1)