我正在使用基于Eclipse RCP的框架,该框架受到低效事件模型的影响.具体而言,控件发出的事件通常是"级联".例如,控件将发出一个COLOR_CHANGED事件,导致父组合将事件传播给兄弟控件,而兄弟控件又决定发出自己的COLOR_CHANGED事件(响应原始事件),从而导致各种各样的连锁反应.我已经分析了应用程序引发超过100,000个事件以呈现一个简单的表单.坦率地说,我不明白它是如何溢出堆栈的.
所以,我正在寻找一种技术或设计模式来防止或减少这种级联行为.我有一些想法,但这不是一个新问题; 对于面向事件的设计,必须有一个"最佳实践".
我的想法:
ValidationFailedEvent而不是Event每个人都处理的泛型(然后必须询问它的状态以确定事件类型).感谢您抽出宝贵时间阅读我的问题.欢迎所有意见/建议.
编辑:感谢pablosaraiva,我读到了责任链,现在有了以下想法:
isHandled属性,如果设置为true,将阻止事件传播.这应该在事件的范围被理解时起作用,但如果事件不能由单个控件"处理"则无效.