gpt4 book ai didi

c# - 事件真的让代码解耦了吗?

转载 作者:行者123 更新时间:2023-11-30 13:22:28 26 4
gpt4 key购买 nike

所以我正在尝试使用事件来解耦我拥有的代码,这是我的问题:

class WorldHandler
{
public void Notify(object sender, EventArgs e)
{
if (e is CameraMovedEventArgs)
{
// handle event
}

if (e is MapLoaded)
{
// handle event
}
}
}

WorldHandler 类监听我的应用程序的不同子系统。那岂不是意味着WorldHandler 仍然与其他子系统耦合?直接访问这个类里面的那些子系统不也是一样吗?

如果很难理解我的问题,我会在我的帖子中添加额外的信息。

我研究过这个问题,但我仍然觉得这很令人困惑,因为不同的人对如何将代码与事件解耦有着截然不同的看法。

最佳答案

是的,您的代码仍然是耦合的,您不仅可以直接引用该类(当您连接事件处理程序时),还可以引用包含被监视类的程序集。

您可以通过在监视类上使用接口(interface)并仅通过接口(interface)上公开的项目访问它来最小化耦合。理想情况下,这个接口(interface)应该在观察者和观察者都引用的第三个“更常见”的程序集中。您还可以通过使用 EventAggregator in Prism 之类的东西来最小化或消除事件耦合。 .

耦合本身并不坏,它只是让交换实现和替换它们变得更加困难(或昂贵)——如果没有适当的解耦,就会有相当多的工作和更多的错误风险。您的应用程序可能不需要适当的解耦 - 这取决于您打算用它做什么。

关于c# - 事件真的让代码解耦了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21951849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com