分层事件处理程序



假设我有一个盒子。 盒子里有一堆信封。 在每个信封中,都有许多索引卡。 如果我在一个索引卡上写一些东西,整个盒子中的每个索引卡都应该执行方法 foo()。

在我看来,索引卡应该告诉它的信封发生了什么事。 它的信封应该告诉盒子它的一张索引卡出了什么事。 该框告诉所有信封告诉所有索引卡执行方法 foo()。

我对 C# 的事件处理程序/委托功能相对不熟悉。 据我所知,这对他们来说似乎是一个很好的用途。 代表们是来这里的方式,还是有更好的方法? 您将如何梳理多级事件处理程序的框架? 任何见解将不胜感激。

如果您确实想使用事件处理程序,那么您必须记住一个对象(在本例中为索引卡)"拥有"一个事件并触发它。 它不应该关心谁或什么在听。 因此,它不在乎索引卡,信封或其他任何东西是否在监听,它只是触发它们。

如果我假设一个盒子有一个包含(或索引卡)中的信封列表,并且信封有一个它包含的索引卡列表,那么你可以;

  1. 该框侦听事件,并枚举它的每个信封包含枚举每个索引卡以执行更新的内容。
  2. 信封侦听事件并枚举它们所在的每个索引卡包含以执行更新
  3. 每个索引卡都会侦听事件并自行更新。

但是,我看到这种方法的问题是索引卡的数量可能很高。 所以你可以有很多索引卡听很多其他索引卡。

我认为在这种情况下最好采用 Rob 建议的发布/订阅方法。 因此,您实现一个消息队列,然后更改的索引卡在此处发布更改,并且侦听的其他所有内容都会收到更改的通知。 这将是一个更好的方法。

但我认为你的问题有点假设,所以当你有少量的对象时,你可以采用基于事件的方法来实现较小的实现。

相关内容

  • 没有找到相关文章

最新更新