0

我有一个公共静态类,其中有一些我在通知项目中使用的公共内容。为注销和登录事件添加公共静态事件并将所有相关类和表单注册到此事件以最小化代码是一个好主意吗,因为目前我在注销和登录方法中有很多代码来处理表单和不同的登录或注销时的类,相反,我只是在登录和注销方法时触发事件,并将代码放入为事件注册的每个类的事件处理程序方法中。这是一个好习惯还是坏习惯?

4

2 回答 2

1

这很糟糕,因为您的侦听器对象(那些绑定到那些静态事件)永远不会被垃圾收集,您应该完全避免静态事件。这就是弱事件模式诞生的原因。虽然我并不是说您需要使用该模式(因为我对您的应用程序内部结构不太了解),但阅读此模式将帮助您更仔细地设计您的应用程序。

关于此事有一篇(旧但有用的)文章。同样,我并不是说您应该使用这种模式。我是说研究这种模式会告诉你为什么静态事件不是一个好主意。

于 2013-05-27T16:24:59.503 回答
0

对于这种类型的场景,您还可以使用Mediator设计模式来订阅和通知“全局”事件。

Mediator.Subscribe("Login", callbackForLogin);

Mediator.Notify("Login", parameters);

您可以在实现此设计模式时使用“WeakReference”以避免内存泄漏(引用不是垃圾收集的)。

例如:http: //zamjad.wordpress.com/2012/03/05/using-mediator-to-communicate-between-user-controls-part-7/

于 2013-05-27T16:41:01.253 回答