将应用程序中的所有事件分组到一个类中是不好的做法吗?

本文关键字:一个 事件 应用程序 | 更新日期: 2023-09-27 18:05:56

我正在开发一个c# GUI应用程序,并且想知道将一些不相关的事件以javascript风格组合到一个类中作为静态事件是否不好,这样订阅者就不需要获得对负责引发它们的任何对象的引用,直到它们被引发。我的理由是,这将极大地解耦代码,并为任何事件保留一个参考,因此我不需要搜索对象引用,如果我需要重构/重做一些实现,它们在更大的应用程序中的唯一大接口就是引发事件。

所讨论的事件本质上是全局的(即视图更改,资产被下载等),并且主要用于视图或控制器对象可以中继状态更改/更改事件上的内容。

将应用程序中的所有事件分组到一个类中是不好的做法吗?

您所描述的模式是"Pub/Sub架构"。一些对象将它们的事件推送到一个中心位置,然后其他一些对象从这个中心位置订阅,并在需要时得到通知。

我不建议初学者自己实现这个系统,因为它很容易犯错误,导致对象意外地扎根,无法被垃圾收集,从而导致内存泄漏。

我喜欢使用Prism的PubSubEvents库,它易于使用并且不会导致内存泄漏。参见prism文档中的"事件聚合"一节,了解示例用法。