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

时间:2015-08-03 02:11:47

标签: c# events

我正在研究一个C#GUI应用程序,并且想知道将一些不相关的事件组合在一起作为静态事件将JavaScript风格组合成一个类是不好的形式,因此订阅者不需要获得引用任何负责提升它们的对象,直到它们被引发为止。我的理由是,这将极大地解耦代码,并为任何事件保留一个参考,所以我不需要搜索对象引用,如果我需要稍后重构/重做一些实现,他们只有大型应用程序的大接口正在引发这一事件。

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

1 个答案:

答案 0 :(得分:3)

您描述的模式是“Pub / Sub Architecture”。一些对象将其事件推送到中心位置,然后其他一些对象从该中心位置订阅并根据需要得到通知。

我不建议初学者自己实现这个系统,因为它很容易出错并导致对象意外生根并且无法进行垃圾回收,导致内存泄漏。

我喜欢使用Prism's PubSubEvents library,它易于使用且不会导致内存泄漏。有关示例用法,请参阅prism文档的“Event Aggregation”部分。