c# – 事件真的使代码解耦吗?
发布时间:2020-12-16 00:23:48 所属栏目:百科 来源:网络整理
导读:所以我试图使用事件来解耦我的代码,这是我的问题: class WorldHandler{ public void Notify(object sender,EventArgs e) { if (e is CameraMovedEventArgs) { // handle event } if (e is MapLoaded) { // handle event } }} WorldHandler类侦听我的应用程
所以我试图使用事件来解耦我的代码,这是我的问题:
class WorldHandler { public void Notify(object sender,EventArgs e) { if (e is CameraMovedEventArgs) { // handle event } if (e is MapLoaded) { // handle event } } } WorldHandler类侦听我的应用程序的不同子系统.这是不是意味着WorldHandler仍然与其他子系统耦合?直接访问这个类中的子系统不是一样的吗? 如果我很难理解我的要求,我会在帖子中添加其他信息. 我对此问题进行了研究,但我仍然觉得这很令人困惑,因为不同的人对如何将代码与事件分离有不同的看法. 解决方法
是的,您的代码仍然是耦合的,您不仅可以直接引用该类(当您挂接事件处理程序时),而且您还可以引用包含正在监视的类的程序集.
您可以通过使用监视类上的接口并仅通过接口上公开的项访问它来最小化耦合.理想情况下,这个界面应该是观察者和watchee参考的第三个“更常见”的组件.您还可以使用类似于EventAggregator in Prism的内容来最小化或消除事件耦合. 耦合本身并不坏,它简单地使得更换实现并替换它们变得更加困难(或者更昂贵) – 如果没有适当的解耦,则会有更多的工作和更多的错误风险.您的应用程序可能不需要正确的解耦 – 这取决于您打算如何处理它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |