设计模式建议

时间:2010-05-25 13:09:42

标签: design-patterns

以下是问题陈述。

有n个匹配字符串,如果发生事件A,然后在某个时间段发生事件B,那么我不会发出警报。但如果B没有发生,那么我必须发出警报。 可能有多个事件链定义是否发出警报。

4 个答案:

答案 0 :(得分:5)

State pattern。你会得到这样的东西(从你的角度来看):

当A发生时,将状态更改为此类,其中B的出现重置状态。如果B出现在初始状态,则发出警报。

检查链接的文章,了解如何实现此行为。

答案 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
});

稍后eventAeventB将为所有已注册的观察者调用notify(),这将触发启动闹钟倒计时/重新设置闹钟的回调。

代码在pesudo-javascript中。如果您使用完整的javascript,只需在回调中使用setTimeoutclearTimeout

我想我应该提一下,Pub / Sub模式(Observer是其子集)也非常好。

答案 3 :(得分:-1)