【发布时间】:2011-03-30 08:11:55
【问题描述】:
给定例如某种类实例具有状态(例如“活动”、“非活动”……)。该实例还将单击事件附加到例如一个链接,但事件处理程序会根据实例的状态执行不同的操作。
伪代码:
IF instance state IS 'active' AND link is clicked THEN call function A
IF instance state IS 'inactive' AND link is clicked THEN call function B
…
我想知道正确处理这种情况的良好做法是什么:
- 通常使用哪些模式来实现这一目标?
- 您是否在事件处理程序中使用了条件?
- 或者当状态改变时是绑定和解除绑定的处理程序?
- 我是否遗漏了一些明显的其他/更好的解决方案?
更新
到目前为止,在阅读答案时,似乎强烈倾向于在处理程序中使用条件。虽然我暗自希望我可能会错过一个替代方案,但我有点预料到这一点。
我喜欢@J-P 的方法,因为它保持方法和状态的配对分开,这似乎比简单的switch 或if/else 语句更具可扩展性和可维护性。
但是,我很想知道这是否在其他地方以不同的方式解决,也许使用不同语言的示例?
【问题讨论】:
标签: javascript events event-handling design-patterns